Matplotlib:左y轴和右y轴具有不同的单位

7

我正在以开尔文为单位绘制曲线。 我希望左y轴显示开尔文单位,右y轴显示摄氏度单位,并且都四舍五入到最接近的整数(这样刻度不会对齐,因为TempK = TempC + 273.15)。

fig=plt.figure
figure=fig.add_subplot(111)
figure.plot(xpos, tos, color='blue')

我不应该使用twinx(),因为它允许叠加具有两个不同比例尺的曲线,而这并不是我的情况(只需更改右轴,而不是曲线)。


你需要使用 twinx() 来完成此操作,因为根据定义,你正在使用两个不同的刻度。使用 set_xticklabels() 来定义你想要的标签。 - Greg
谢谢。是的,事实上在发帖后我意识到了这一点,并最终找到了解决方案(请见下文)。 - Bruno von Paris
1
考虑到在这种情况下,应该能够从两个y轴上的曲线读取值,我会使用ParasiteAxesAffine2D().translate()转换,特别是如果它是用于交互式使用(平移/缩放)。这使得寄生y轴可以与主要y轴有偏移量(或者是比例关系)。这里是我的早期答案,使用了寄生轴。 - sodd
是的,这个解决方案看起来很合适:下次我需要一个链接轴时会考虑使用。谢谢! - Bruno von Paris
1个回答

8

输入图像说明我找到了以下解决方案:

fig=plt.figure
figure=fig.add_subplot(111)
figure.plot(xpos, tos, color='blue')
... plot other curves if necessary
... and once all data are plot, one can create a new axis

y1, y2=figure.get_ylim()
x1, x2=figure.get_xlim()
ax2=figure.twinx()
ax2.set_ylim(y1-273.15, y2-273.15)
ax2.set_yticks( range(int(y1-273.15), int(y2-273.15), 2) )
ax2.set_ylabel('Celsius')
ax2.set_xlim(x1, x2)
figure.set_ylabel('Surface Temperature (K)')

不要忘记设置twinx轴xaxis!

4
你的 figure 变量实际上并不是图形,而是轴,有点混淆。 - xApple

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接