自动更改视图边界以调整Matplotlib大小

7

当扩展时,是否可以设置图表以显示更多数据?

Matplotlib绘图在调整大小时会自动缩放。要显示特定区域,可以在轴上使用set_xlim等方法。我有一个类似心电图的实时数据绘图,其y限制已预定义,但如果我扩展窗口或只是拥有大型监视器,我想看到更多沿x轴的数据。

我在一个Pyside应用程序中使用它,我可以在调整大小时更改xlim,但我想要更干净和通用的解决方案。

1个回答

9

一个实现这个功能的方法是为resize_event添加一个处理程序。以下是一个简短的例子,展示了如何完成此操作。您可以根据需要进行修改:

import numpy as np
import matplotlib.pyplot as plt

def onresize(event):
    width = event.width
    scale_factor = 100.
    data_range = width/scale_factor
    start, end = plt.xlim()
    new_end = start+data_range
    plt.xlim((start, new_end))

if __name__ == "__main__":

    fig = plt.figure()
    ax = fig.add_subplot(111)
    t = np.arange(100)
    y = np.random.rand(100)
    ax.plot(t,y)
    plt.xlim((0, 10))
    cid = fig.canvas.mpl_connect('resize_event', onresize)
    plt.show()

1
使用 fig.dpi 作为 scale_factor 会使其更好。 - vpoverennov

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