2011-08-14 29 views
1

我在我的wx.Frame中使用matplotlib在某個位置繪製一些箭頭和文本。箭頭的數量和位置基於先前創建的數據。 我做了一些計算,但基本上是這樣的:wppython-plotting中的Matplotlib中止

箭頭=底漆 每個引物: 在y位置畫一個箭頭 - 0.05至previos箭頭(primer_y - 0.05)。 箭頭的x位置來自數據,計算並縮放(不是很重要,只知道箭頭應該位於primer_x的位置)。

一切工作正常,直到我有很多箭頭繪製。例如。在我的代碼示例中,數據包含62個箭頭,其中18個繪製正確,接下來的3個箭頭丟失,但文本在那裏,剩下的完全丟失。

有誰知道可能是什麼問題?我嘗試了allready來改變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.text更改爲self.axes.text 將允許您使用相同的座標系,這將使您更方便地將文本放在箭頭下方。
  3. 代碼中有太多的 硬編碼數字(「幻數」)。這使得它非常難以修復,因爲當一個數字發生變化時,其餘部分不會以邏輯方式與 一起更改。如果你可以用公式來定義 這些神奇數字之間的關係,那麼你的人生將會更容易。
  4. 例如,如果你改變了for循環到

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

    ,而不是由與每個固定量遞減primer_y通過循環,然後primer_y將0.95之間自動空間本身下降到0.0不管data有多少項目。

  5. 如果您發現箭頭壓扁(垂直),你可以通過改變該線路上figsize擴大 圖:

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

感謝這個偉大的答案和建議! – snowflake