2012-11-30 44 views
3

我见过如何在单个图中添加2个缩放比例的示例,命令为twinx()。但是,我仍然无法弄清楚如何为x轴添加2个刻度。在我的情况下,我从MATLAB导入[x,y]数据并绘制它们。我想让我的原始数据x(我们可以称之为x1)显示在图的底部,并且在图的顶部标准化的x数据(我们可以称之为x2)。我的代码是:在同一图中放置2个x轴缩放比例

from scipy.io import loadmat 
import matplotlib.pyplot as plt 
import numpy as np 

# loading data 
fid_1 = 'beta_sweep_020.mat' 
m1 = loadmat(fid_1) 

x = m1['vt_dX'] 
x1 = np.reshape(x, x.size) 
x2 = x1/(-466.0) 
y = m1['vt_beta'] 
y1 = np.reshape(y, y.size) 

# plot 
fig = plt.figure() 
ax = fig.add_subplot(111) 

plt.plot(abs(x1),y1,'r') 
plt.show() 

任何人都可以帮助我吗?谢谢。

回答

2

使用ax.twiny()

import matplotlib.pyplot as plt 
import numpy as np 

x1 = np.linspace(0,1000000,100) 
x2 = x1/(-466.0) 
y1 = np.log(x1) 

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
ax2 = ax1.twiny() 
line1, = ax1.plot(x1,y1,'r') 
line2, = ax2.plot(x2,y1,'b') 

plt.legend((line1, line2), ('red', 'blue')) 
plt.show() 

enter image description here

+0

谢谢,这工作。但我仍然有一点点问题。在你的代码中,如果我将'-466.0'改为'466.0'并运行它,我会看到两条稍微分开的曲线,但并不完全重叠。理论上,无论我们如何缩放[x2],都应该只有一条曲线,因为[y1]仅在[x1]上运行。 –

+0

“x1”和“x2”的位置未对齐。因此尽管y值相同,但它们不会出现在两个x轴上的相同位置。您可以通过将线条样式更改为“rx''和”bo''来更清楚地看到这一点。 – unutbu