小编典典

从matplotlib图检索XY数据

python

我正在wxPython中编写一个小应用程序,它具有一个matplotlib图形(使用wxagg后端)面板。我想为用户添加将图中当前绘制的X,Y数据导出到文本文件的功能。有无创方法可以做到这一点吗?我已经搜索了很多,似乎什么也找不到,尽管我觉得它非常简单而且就在我的面前。

我绝对可以获取数据,并在绘制数据时将其存储在某个位置,并使用它-但这会侵入我的代码的较低级别。如果我可以做些简单的事情,它将变得更加容易并且通用:

x = FigurePanel.axes.GetXData()
y = FigurePanel.axes.GetYData()

希望这是有道理的:)

非常感谢!任何帮助是极大的赞赏!

编辑 :澄清一下,我想知道如何做是获取X,Y数据。在那之后写入文本文件很简单;)


阅读 215

收藏
2020-12-20

共1个答案

小编典典

这有效:

In [1]: import matplotlib.pyplot as plt

In [2]: plt.plot([1,2,3],[4,5,6])
Out[2]: [<matplotlib.lines.Line2D at 0x30b2b10>]

In [3]: ax = plt.gca() # get axis handle

In [4]: line = ax.lines[0] # get the first line, there might be more

In [5]: line.get_xdata()
Out[5]: array([1, 2, 3])

In [6]: line.get_ydata()
Out[6]: array([4, 5, 6])

In [7]: line.get_xydata()
Out[7]: 
array([[ 1.,  4.],
       [ 2.,  5.],
       [ 3.,  6.]])

我通过在轴对象中四处挖掘发现了这些。我只能找到有关这些函数的一些最低限度的信息,可以给它们一个布尔标志以获取原始数据或已处理的数据,不知道是什么意思。

编辑 :乔·肯顿(Joe Kington)展示了一种更简洁的方法:

In [1]: import matplotlib.pyplot as plt

In [2]: lines = plt.plot([1,2,3],[4,5,6],[7,8],[9,10])

In [3]: lines[0].get_data()
Out[3]: (array([1, 2, 3]), array([4, 5, 6]))

In [4]: lines[1].get_data()
Out[4]: (array([7, 8]), array([ 9, 10]))
2020-12-20