Python 无法对齐matplotlib twinx轴的记号

Python 无法对齐matplotlib twinx轴的记号,python,matplotlib,Python,Matplotlib,我创建了一个具有两个y轴的matplotlib绘图。y轴具有不同的比例,但我希望刻度和栅格对齐。我从excel文件中提取数据,因此无法事先知道最大限制。我尝试了以下代码 # creates double-y axis ax2 = ax1.twinx() locs = ax1.yaxis.get_ticklocs() ax2.set_yticks(locs) 现在的问题是ax2上的刻度不再有标签。有谁能给我一个好方法,让刻度与不同的刻度对齐吗 对齐两个不同刻度的刻度位置意味着放弃nice自动

我创建了一个具有两个y轴的matplotlib绘图。y轴具有不同的比例,但我希望刻度和栅格对齐。我从excel文件中提取数据,因此无法事先知道最大限制。我尝试了以下代码

# creates double-y axis
ax2 = ax1.twinx()

locs = ax1.yaxis.get_ticklocs()
ax2.set_yticks(locs) 

现在的问题是ax2上的刻度不再有标签。有谁能给我一个好方法,让刻度与不同的刻度对齐吗

对齐两个不同刻度的刻度位置意味着放弃nice自动刻度定位器,并将刻度设置为与原始刻度轴相同的次轴位置

其思想是使用函数在两个轴刻度之间建立关系,并将第二个轴的刻度设置在第一个轴的位置

请注意,这是针对一般情况的解决方案,它可能会导致完全不可读的标签,具体取决于用例。如果碰巧有更多关于轴范围的先验信息,可能会有更好的解决方案


另请参见牺牲第一个轴的自动记号位置以便于设置次轴记号位置的情况。

对齐两个不同刻度的记号位置意味着放弃nice自动记号定位器,并将记号设置到次轴上与原始刻度相同的位置一个

其思想是使用函数在两个轴刻度之间建立关系,并将第二个轴的刻度设置在第一个轴的位置

请注意,这是针对一般情况的解决方案,它可能会导致完全不可读的标签,具体取决于用例。如果碰巧有更多关于轴范围的先验信息,可能会有更好的解决方案

另请参阅第一个轴的自动勾号位置被牺牲的情况,以便更容易地设置第二个轴的勾号位置。

对于任何想知道(以及我以后的参考)的人,lambda函数
f
非常重要。fBeingernest的答案通过以下方式将输入的左勾号映射到相应的右勾号:

RHS记号=底部RHS记号+(%穿过的LHS范围*RHS范围)

请参阅以截断小数位:

from matplotlib.ticker import FormatStrFormatter

ax2.yaxis.set_major_formatter(FormatStrFormatter('%.2f')) # ax2 is the RHS y-axis
对于任何想知道的人(以及我以后的参考),lambda函数
f
在ImportantanceOfBeingernest的答案中将输入的左勾号映射到相应的右勾号:

RHS记号=底部RHS记号+(%穿过的LHS范围*RHS范围)

请参阅以截断小数位:

from matplotlib.ticker import FormatStrFormatter

ax2.yaxis.set_major_formatter(FormatStrFormatter('%.2f')) # ax2 is the RHS y-axis

你好@ImportanceOfBeingErnest,谢谢你的回答。我也遇到过同样的问题,现在它可以正常工作了。但我很想知道函数f背后的思想或数学是什么(数学上…)。谢谢你好@ImportanceOfBeingErnest,谢谢你的回答。我也遇到过同样的问题,现在它可以正常工作了。但我很想知道函数f背后的思想或数学是什么(数学上…)。谢谢这回答了你的问题吗?这回答了你的问题吗?