0

我正在使用 matplotlib 生成一个图,我想在左右 y 轴上显示标签。通过运行代码,您会注意到由右侧 y 轴形成的网格线出现在绘图线的顶部,左侧线出现在下方。我希望它们都出现在情节下方。我试过了zorderset_axisbelow(True)但没有成功。

下面的示例代码:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

t = np.linspace(0,5)
x = np.exp(-t)*np.sin(2*t)

fig, ax1 = plt.subplots()

ax1.plot(t, x)
ax2 = ax1.twinx()
ax2.plot(t, x, alpha=0.0)

ax1.set_xticks([0,1,2])
ax1.set_yticks([0.1, 0.2])
ax2.set_yticks([0.3, 0.4, 0.5])

ax1.grid(True, color='lightgray')
ax2.grid(True, color='lightgray')

for a in [ax1, ax2]:
    a.spines["top"].set_visible(False)
    a.spines["right"].set_visible(False)
    a.spines["left"].set_visible(False)
    a.spines["bottom"].set_visible(False)

ax1.set_axisbelow(True)
ax2.set_axisbelow(True)

plt.savefig('fig.pdf')
plt.show()
4

0 回答 0