python - 防止来自双轴的网格线从原始轴绘制在艺术家的顶部
问题描述
我有一个轴用于绘制一些数据,还有另一个双轴用于在特定刻度位置(原始轴的刻度除外)绘制网格线:
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()
现在这会产生不良影响,即双轴的网格线绘制在原始轴的图例和线图之上。据我了解,这是因为 matplotlib 按创建轴的顺序绘制轴,因此zorder
无济于事(因为zorder
仅指定单个轴的艺术家之间的顺序)。
我知道我可以改为在双轴上绘制数据ax2
(后跟ax2.legend()
),但我更喜欢按原样进行设置。相反,改变绘制两个轴的顺序应该可以解决问题,但我不知道该怎么做。f.get_axes()
似乎按照创建轴的顺序返回轴,但没有恢复它的选项。
或者也许甚至存在另一种解决方案?
解决方案
推荐阅读
- typescript - 读取walk /protos中的第一个路径时出错错误:ENOENT:没有这样的文件或目录,带有Firestore和Typescript lambda的lstat'/protos'
- unity3d - Unity Build 不同于编辑器
- julia - 我无法向 Julia 添加 github 存储库
- php - .htaccess 文件中的动态子域处理,用于 xxx.domain.com 重定向到 ../users 文件夹
- html - 在来自 Unix shell 的电子邮件中嵌入动态 HTML 表
- javascript - 在 Next.js 页面中检索子域
- javascript - Flexbox,滚动元素
- mysql - 为什么MYSQL时间比服务器时间晚2分钟
- reactjs - 动作完成时如何告诉 React-Redux 视图?
- mongodb - 为什么mongodb不能对复合索引的无前缀子索引进行有效排序?