私は、wxPythonで(wxaggバックエンドを使用して)matplotlib図を含む小さなアプリを作成しています。ユーザーが図に現在プロットされているものの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]))