我正在wxPython中编写一个小应用程序,它具有一个matplotlib图形(使用wxagg后端)面板。我想为用户添加将图中当前绘制的X,Y数据导出到文本文件的功能。有无创方法可以做到这一点吗?我已经搜索了很多,似乎什么也找不到,尽管我觉得它非常简单而且就在我的面前。
我绝对可以获取数据,并在绘制数据时将其存储在某个位置,并使用它-但这会侵入我的代码的较低级别。如果我可以做些简单的事情,它将变得更加容易并且通用:
x = FigurePanel.axes.GetXData() y = FigurePanel.axes.GetYData()
希望这是有道理的:)
非常感谢!任何帮助是极大的赞赏!
编辑 :澄清一下,我想知道如何做是获取X,Y数据。在那之后写入文本文件很简单;)
这有效:
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]))