Python 在辅助轴上绘制网格线-Matplotlib 问题
我正试图从我的第二个轴的记号中用Python 在辅助轴上绘制网格线-Matplotlib 问题,python,matplotlib,Python,Matplotlib,我正试图从我的第二个轴的记号中用 ax2.grid(color=color,linestyle='--') 数字上没有显示任何内容,我相信我的情况与for相同,不是吗 然而,有没有人能在不改变规模的情况下解决这个问题?我的意思是,通过反转比例,在主轴上有百分比比例,在次轴上有正常比例 完整代码 输出 我在这个主题上做了一些挖掘,并在GitHub上打开了一个。以下是我发现的: SecondaryAxis是matplotlib 3.1.0中添加的“非常新的东西”。(2019年5月)。甚至连科学家
ax2.grid(color=color,linestyle='--')
数字上没有显示任何内容,我相信我的情况与for相同,不是吗
然而,有没有人能在不改变规模的情况下解决这个问题?我的意思是,通过反转比例,在主轴上有百分比比例,在次轴上有正常比例
完整代码
输出
我在这个主题上做了一些挖掘,并在GitHub上打开了一个。以下是我发现的:
- SecondaryAxis是matplotlib 3.1.0中添加的“非常新的东西”。(2019年5月)。甚至连科学家都认为
方法是实验性的secondary_xaxis()
继承自SecondaryAxis
,它是一个“”。不应该(从v.3.3.3开始)将其用作\u AxesBase
对象,并且轴
不应该绘制任何东西(如辅助轴.grid()
所做的)。尽管如此,我同意有一种不起作用的方法是错误的\u AxesBase.grid()
- 因此,在编写本文时,
仅被假定在原始轴上工作.grid()
- 由于
仅在非次轴上工作,因此将主轴设为蓝色,并将其移到顶部和右侧.grid()
#获取x和y记号,以便将其传输到次轴
xticks\u orig=ax1.get\u xticks()
yticks\u orig=ax1.get\u yticks()
#使主轴为蓝色,因为我们要在其上绘制栅格
ax1.xaxis.tick_top()
ax1.yaxis.tick_right()
ax1.set_xticks(xticks)
ax1.设置_yticks(yticks)
ax1.设置标签(标签=每个标签)
ax1.设置标签(标签=每个标签)
ax1.勾选参数(axis=“both”,color=color,labelcolor=color)
ax1.网格(颜色=颜色,线型=“”)
#绘制黑色的次轴
ax2=ax1。辅助轴(“左”)
ax3=ax1.次级轴(“底部”)
ax2.set_yticks(yticks_orig)
ax3.set_xticks(xticks_orig)
手动添加轴网线
您也可以手动添加网格线,如下所示
xlim=ax1.get\u xlim()
对于ax2中的y。获取\u yticks():
ax1.绘图(xlim,(y,y),ls=“--”,color=color,lw=0.5)
ax1.set_xlim(xlim)
ylim=ax1.get_ylim()
对于ax3中的x。获取\u xticks():
ax1.绘图((x,x),ylim,ls=“--”,color=color,lw=0.5)
ax1.set_ylim(ylim)
输出如下所示:
这里的区别是,我们现在在图上画的线看起来像网格线。要添加np8的答案,您也可以使用来画线。这样做的优点是,您不需要手动跟踪y限制:
for x in ax2.get_xticks():
ax1.axvline(x, color=color, zorder=-1, linestyle="--", linewidth=0.5)
还请注意,您需要适当地变换x坐标,以匹配从ax1到ax2的变换
此外,在我的例子中,我首先必须渲染画布,以便生成记号标签:
fig1.canvas.draw()
很有魅力,非常感谢。但是,我将保留这个问题,看看是否有人知道为什么grid()不能在SecondaryAxis上工作。添加了SecondaryAxis.grid()不能工作的解释,以及其他替代解决方法。
fig1.canvas.draw()