2011-08-14 10 views
1

私はwx.Frameでmatplotlibを使用して、矢印とテキストを特定の位置に描画しています。矢印の数と位置は、以前に作成されたデータに基づいています。 は、私はいくつかの計算を行うが、基本的にはこのようなものだ:Matplotlibでwxpythonプロットが中止される

矢印=各プライマーのためのプライマー : 位置yで1つの矢印を描く - &過去の矢印( - 0.05 primer_y)に0.05。 矢印のxの位置は計算され、スケールされたデータから得られます(それほど重要ではありませんが、矢印はどこにあるべきですか?)。

描画する矢印がたくさんある限り、すべてうまく動作します。例えば。私のコード例では、データには62個の矢印が含まれています.18個は正しく描かれ、次の3個は欠けていますが、テキストはそこにあり、残りは完全に欠落しています。

問題の原因を知っている人はいますか?私は既にFigureSizeを変更しようとしましたが、矢印を伸ばすだけです。ここで

は、迅速かつ汚い作業例ですが、データがコードに含まれています: http://pastebin.com/7mQmZm2c

すべてのヘルプは高く評価されます! ありがとうございます!ループ内 ステファニー

答えて

3
  1. スティック

     print((primer_x+0.06, primer_y)) 
    

    primer_yが負になると、矢印が描画されなくなります。

  2. 矢印をself.axes.annotateで描画し、 の矢印にself.fig.textというラベルを付けてはなりません。軸と図は異なる 座標系を使用します。 self.fig.textself.axes.text を変更すると、同じ座標系を使用できるようになり、矢印の下にテキストを置くのが容易になります( )。
  3. コード内にハードコードされた数字(「マジックナンバー」)があまりにも多いです。 1つの数字が変わると残りの部分はそれに伴って論理的な方法で変更されないので、修正するのが非常に難しくなります。 数式を使用して のマジックナンバーの関係を定義することができれば、あなたの人生は よりずっと簡単になります。たとえば、

    for primer,primer_y in zip(data,np.linspace(0.95,0.0,len(data))): 
    

    にforループ変更する場合代わりにそれぞれに一定量primer_yをデクリメントの

  4. は、ループを通過し、primer_yは関係なく0.0まで0.95の間に自動的にスペース自体意志dataにはいくつの商品が入っていますか?

  5. あなたは矢印が(縦)踏み付けている見つけた場合は、この行にfigsizeを変更することにより、 図を拡大することができます。この偉大な答えや提案のための

    self.fig = matplotlib.figure.Figure(figsize=(20, 30), facecolor='white') 
    
+0

感謝を! – snowflake

関連する問題