我想在与原始 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()
Run Code Online (Sandbox Code Playgroud)
输出如下所示:显然,顶部轴上的刻度与下面的刻度不在同一位置(即,在顶部轴上有 7 个刻度,而底部只有 6 个刻度)。
为什么会这样?

编辑:设置 xlim (如下所示)仅适用于初始绘图,但不适用于放大不同区域。我添加了一个回调函数,在放大/缩小时,在与 onax2相同的位置添加刻度ax1,但这似乎不起作用。
此外,我使用的原因twiny是因为最终显示的刻度值ax2将以ax1非线性方式取决于刻度值。我只希望刻度线在轴上的相同位置。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()
ax2.set_xlim(ax1.get_xlim())
ax2.set_xticks(ax1.get_xticks()) …Run Code Online (Sandbox Code Playgroud)