我希望有一个X轴上部,其刻度线与原始X轴刻度线位于相同的位置(在轴上)(刻度线标签可以不同)。看起来很容易做到,但是我不确定下面的代码为什么不起作用:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
X = np.linspace(11,80,1000)
Y = 2*np.sin(X)*np.exp(-X/20.)
ax1.plot(X,Y)
ax2 = ax1.twiny()
old_ticks = ax1.get_xticks()
ax2.set_xticks(old_ticks)
plt.show()
输出如下所示:显然,顶部轴上的刻度线与下面的刻度线不在同一位置上(即,顶部轴上的刻度线只有7个,底部只有6个刻度线。] >
为什么会这样?
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS82bUtHRi5wbmcifQ==” alt =“第二个x轴上的偏移滴答声”>
编辑:设置xlim(如下所示)仅在初始绘图中起作用,而在一个人在不同区域放大时则无效。我添加了一个回调函数,以便在放大/缩小时将ax2
上的刻度添加到与ax1
上相同的位置,但这似乎不起作用。
[另外,我使用twiny
的原因是因为最终显示的ax2
的报价值将以非线性方式取决于ax1
的报价值。我只希望刻度线在轴上的相同位置。导入numpy为np导入matplotlib.pyplot作为plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
X = np.linspace(11,80,1000)
Y = 2*np.sin(X)*np.exp(-X/20.)
ax1.plot(X,Y)
ax2 = ax1.twiny()
ax2.set_xlim(ax1.get_xlim())
ax2.set_xticks(ax1.get_xticks())
def on_xlim_changed(ax1):
ax2.set_xlim(ax1.get_xlim())
ax2.set_xticks(ax1.get_xticks())
ax1.callbacks.connect('xlim_changed',on_xlim_changed)
plt.show()
我希望有一个X轴上部,其刻度线与原始X轴刻度线位于相同的位置(在轴上)(刻度线标签可以不同)。似乎很容易做到,但我不是...
尝试:
您应使用Locator
功能