【问题标题】:Second plot axis with different units on same data in matplotlib?matplotlib中相同数据的第二个绘图轴具有不同的单位?
【发布时间】:2016-10-07 14:57:49
【问题描述】:

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

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

如何在 matplotlib 中做到这一点?

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

【问题讨论】:

标签: python matplotlib


【解决方案1】:

这已在 cmets 中的链接中得到解答,但我想在此处添加解决方案,以防链接中断。基本上你制作一个双轴,并使用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)

【讨论】:

    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多