matplotlib 中相同数据上具有不同单位的第二个绘图轴?

Ger*_*nuk 5 python matplotlib

我想plt.plot([1,2,4])在右侧的图中添加第二个 y 轴,它应该与左轴对齐,但可以计算不同的单位。

例如缩放到 1。因此有效地左侧 y 轴将是 [1,2,3,4],右侧应该是 [0.25, 0.5, 0.75, 1.0] 并正确对齐。

我怎样才能在 matplotlib 中做到这一点?

(双轴示例似乎处理不同的用例,其中您在不同的数据上有未对齐的轴)

spi*_*nup 6

这个问题已在评论中的链接中得到回答,但我想在此处添加解决方案,以防链接中断。基本上,您创建一个双轴,并用于callbacks.connect确保新轴在原始轴更新时更新。因此,连接代码需要位于绘图命令之前。使用OP的例子:

import matplotlib.pyplot as plt

x = [1,2,3,4]

fig, ax1 = plt.subplots()

# add second axis with different units, update it whenever ax1 changes
ax2 = ax1.twinx()

def convert_ax2(ax1):
    y1, y2 = ax1.get_ylim()
    ax2.set_ylim(y1/max(x), y2/max(x))
    ax2.figure.canvas.draw()    

ax1.callbacks.connect("ylim_changed", convert_ax2)   

ax1.plot(x)
Run Code Online (Sandbox Code Playgroud)

有两个轴的图