首页 > 解决方案 > 如何从 Matplotlib 中的 Figure 或 Axes 对象中获取绘制数据的限制?

问题描述

我正在尝试确定 matplotlib 轴或图形上数据点的限制,但我找不到任何方法。我将举一个例子,但原始图像要复杂得多: 在此处输入图像描述

通过使用 Axes.get_xbound() 或 Axes.get_xlim() 我得到 (-265.6, 6000.0) 但我想得到 (0,5570)。

我问这个是因为在这部分代码中我只能访问 Figure 或 Axes 对象。像这样的东西:

def plot_detail():
    fig, ax = plt.subplots(1)
    # Code
    # ...
    return fig,ax

def main():
    fig,ax = plot_detail()
    print(ax.get_xbound())
    print(ax.get_xlim())
    # Here I would need the data limits
    # Any Idea how?

标签: pythonmatplotlib

解决方案


首先,作为一个旁注,从你想要代码中只有绘图(图和轴)的点的数据来看,在我看来,至少有一个不太好的设计决策在设计/编写代码时制作。如果我能看到整个代码,我可能会推荐一种更好的方法。也就是说,有时我们没有预料到代码的所有需求是可以理解的,然后有时(取决于程序的大小)可能不值得重新设计/重写部分代码的努力。

因此,要获取数据(以了解数据本身的 x 限制,而不仅仅是绘图)......您可以通过lines.Line2D从 Axes 对象获取对象来做到这一点。

即使看起来您正在绘制条形图,那里仍然应该有一个 line2D 对象。该对象包含 xy 数据。

xdata = ax.get_lines()[0].get_xdata()
print('xdata limits:',xdata[0],xdata[-1])

HTH。


推荐阅读