2012-09-16 64 views
1

我正在使用Qt4Agg(PyQt4)作爲後端在matplotlib中繪製繪圖。這有一個非常有用的工具欄,帶有非常有用的按鈕'編輯曲線和軸參數'。但是,只要我按下它,就會出現錯誤。 (我知道它適用於條形圖,但不適用於線圖:P)。matplotlib:Qt4Agg工具欄的惱人的bug

原因和追溯可以在下圖中清楚地看到。

enter image description here

我想這可能是matplotlib的當前版本,所以我想這同一的最新版本中的錯誤,但它仍然給出了同樣的錯誤。

這是給出了同樣的錯誤(圖將是不同的,從上圖)簡單的腳本 -

import matplotlib.pyplot as plt 
plt.plot(range(10)) 
plt.show() 

(我已經通過配置文件/etc/matplotlibrc配置後端)

請幫我解決這個問題問題。

回答

1

這似乎確實是matplotlib的Qt4表單編輯器中的一個錯誤。

該錯誤似乎在FormWidget.setup()方法的一部分中,在matplotlib/backends/qt4_editor/formwidget.py中。在Windows上(這裏我不能重現該問題)matplotlib 1.1.0,它包含以下內容:在Kubuntu的精確

 elif isinstance(value, (list, tuple)): 
      selindex = value.pop(0) 
      field = QComboBox(self) 
      if isinstance(value[0], (list, tuple)): 
       keys = [ key for key, _val in value ] 
       value = [ val for _key, val in value ] 
      else: 
       keys = value 
      field.addItems(value) 

matplotlib v1.1.1rc(在那裏我可以重現該問題)取代第二行與上述相同

  selindex = list(value).pop(0) 

最終,這兩個版本都不正確。

版本1.1.0方法的問題在於它不處理元組(元組是不可變的,並且沒有pop)方法,版本1.1.1rc代碼的問題在於第一個元素value應該被刪除,但它只會從list(value)創建的臨時列表中刪除。

該錯誤在版本1.1.1中修復。我剛下載並安裝了這個版本,不能再重現這個問題。

+0

謝謝盧克:)。我以爲我有最新版本,因爲我在Ubuntu 12.04機器上測試過它,但事實並非如此。它是1.1.1rc。所以我剛剛安裝了github的最新版本,現在它工作得非常好!謝謝。 –