2013-11-21 20 views
8

私はwxPythonのmatplotlibの図(wxaggバックエンドを使用)を持つ小さなアプリケーションを作成しています。私は、ユーザーが現在図に描かれているもののX、Yデータをテキストファイルにエクスポートする機能を追加したいと考えています。これを行う非侵略的な方法はありますか?私はかなり捜してきたし、何かを見つけることができないようだが、信じられないほどシンプルで、自分の顔の前にいるように感じる。matplotlibからXYデータを取得図

データをプロットしたときに、データを取得してどこかに格納して、それを使用することができますが、それはかなり侵略的で、私のコードの下位レベルになります。

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

うまくいけば、いくつかの理にかなっている:)そんなに

ありがとう:私は限り簡単に何かをすることができればそれは、そんなに簡単に、かつ普遍的になります!どんな助けでも大歓迎です!

編集:明確にするために、私はX、Yデータを取得する方法を知りたいと思います。それは簡単です後にテキストファイルへの書き込み;)

+0

私は私が考えることができた単語のすべての組み合わせをグーグルが、そのスレッドに遭遇しませんでした誓います!リンクありがとう。 – brettb

+0

私は「matplotlib get_xdata」のためのグーグルでしか見つかりませんでしたが、SOの標準検索では見つかりませんでした。 –

+1

ちょうど参考:matplotlibプロット関数は、データ、スタイル情報などを含む 'Artist'インスタンス(' plot'の場合はアーティストシーケンス)を返します。多くのアーティストは 'get_data'と' set_data'を持っています。メソッド(例えば、 'x、y = line.get_data()'を実行することができます)。いくつかの場合、このメソッドは他のものと呼ばれるかもしれません(例えば、 'scatter'は、等価メソッドが' get_offsets'であるコレクションを返します)。いくつかのアーティスト( 'ContourSets'など)は元の入力データへの参照を含みません。非常にまれです。基本的には、プロット関数の出力を保持する必要があります。 –

答えて

11

この作品:

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.]]) 

私は軸オブジェクトの周り掘ってこれらを発見しました。これらの関数についてはminimal informationしか見つかりませんでしたが、どういう意味なのかわからない、元のデータまたは処理されたデータを取得するためのブール値フラグを付けることができます。

編集:ジョー・キングトンこれを行うには少しすっきり方法を示した:

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])) 
+0

ありがとう!私はこれを試してみましょう。 – brettb

+0

魅力的な作品です。将来の読者のために、私はその行にも追加します.get_label()はラインオブジェクトに関連付けられたラベルも返します;)もう一度ありがとう! – brettb

+0

なぜ 'mpl_toolkits.mplot3d.art3d.Line3Dオブジェクト'に 'get_zdata()'がありませんか? z値を抽出できません。 :-( –

関連する問題