2010-06-28 171 views
12

我有一个y变量,我试图在图的顶部和底部对两个相关的x轴进行绘图(例如,y =“立方体中的东西数”,x1 =“立方体的边长”,x2 =“立方体的体积”)。在numpy数组中我有y,x1,x2。我的x1和x2之间的关系是一对一和单调的,但并不简单,并且它们在不同的方向上增加,如“边长”和“逆量”。我试过使用twiny()和twin(),但是这些似乎是为了绘制不同的y变量而设计的。有任何想法吗?感谢大家!Matplotlib:一条线,以不同单位的两个相关x轴绘制?

下面是我试图做的事情的一个例子,除了一个单一的行而不是符号。这个想法就是说,sigma = 0.4和M = 2e15是一个点的等价和可互换的标签。

alt text http://img580.imageshack.us/img580/4554/screenshotuy.png

回答

8

对于不同的x-秤使用twiny()(认为这是 “共享y轴”)。一个例子稍微改编自matplotlib documentation

import numpy as np 
import matplotlib.pyplot as plt 

# plot f(x)=x for two different x ranges 
x1 = np.linspace(0, 1, 50) 
x2 = np.linspace(0, 2, 50) 
fig = plt.figure() 

ax1 = fig.add_subplot(111) 
ax1.plot(x1, x1,'b--') 

ax2 = ax1.twiny() 
ax2.plot(x2, x2, 'go') 

plt.show() 

如果你只是想第二轴情节的第二数据设置为不可见。

ax2.plot(x2, x2, alpha=0) 
+1

这在同一幅图中绘制了两条线,相对于不同的x轴缩放。我试图绘制一条线,相对于较低的x轴缩放,而较高的x轴仅用于指示不同单位中的相同线。我会给我的问题添加一个例子,这与我需要做的非常相似 - 底部变量,顶部质量,差异(质量),反之亦然。再次感谢。 – Kyle 2010-06-29 14:07:36

+0

@凯尔我更新了这个案子的答案。 – 2010-06-29 18:40:16

+1

谢谢。好的...这更接近了,但问题在于第二个轴实际上是刚刚叠加在第一个轴上的新图。我的顶轴需要知道底轴,以便两者之间的关系是正确的。在我的示例中,M和西格玛之间的关系可能会很复杂,因此您不能只在两者之间的最小值和最大值之间进行线性划分。在matplotlib中可能没有一个简单的方法来自动执行此操作(尽管我被告知IDL中存在...)。 – Kyle 2010-06-29 20:48:40

相关问题