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

时间:2016-10-07 14:57:50

标签: python matplotlib

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

例如缩放为1.因此左边的y轴将是[1,2,3,4],右边应该是[0.25,0.5,0.75,1.0]并且正确对齐。

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

(双轴示例似乎处理了一个不同的用例,你在不同的数据上有未对齐的轴)

1 个答案:

答案 0 :(得分:0)

在评论中的链接中对此进行了回答,但是我想在此处添加解决方案,以防链接中断。基本上,您创建一个双轴,并使用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)

plot with two axes