a_g*_*est 3 python matplotlib python-3.x multiple-axes
我有一个轴,在其上绘制一些数据,还有另一个双轴,用于在特定刻度位置(原始轴的刻度除外)绘制网格线:
import matplotlib.pyplot as plt
import numpy as np
f, ax = plt.subplots()
ax.set_xlim([0, 1])
ax2 = ax.twiny()
ax2.set_xlim([0, 1])
ax2.set_xticks(np.linspace(0, 1, 11))
ax2.xaxis.grid()
x = np.linspace(0, 1, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
现在,这会产生不良效果,即双轴的网格线绘制在原始轴的图例和线图之上。据我了解,这是因为 matplotlib 按照创建的顺序绘制轴,因此zorder
没有帮助(因为zorder
只指定单个轴的艺术家之间的顺序)。
我知道我可以在双轴上绘制数据ax2
(后跟ax2.legend()
),但我更愿意按原样进行设置。相反,更改两个轴的绘制顺序应该可以解决问题,但我不知道如何做到这一点。似乎f.get_axes()
按创建顺序返回轴,但没有选项可以恢复它。
或者也许还存在另一种解决方案?
您可以更改轴本身的 zorder。
ax.set_zorder(2)
ax2.set_zorder(1)
ax.patch.set_visible(False)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
453 次 |
最近记录: |