1

データを取り込み、matplotlib (v1.3.x) を使用してプロットする小さな python プログラムがあります。プロットにはドラッグ可能な凡例があります。Windows では正常にレンダリングされますが、Mac (OS 10.8.3) ではエラーが発生します。このコードは、最初に Figure を作成し、次に Figure を使用してサブプロットを作成します。サブプロットは座標軸を返します。軸オブジェクトを使用して凡例を作成しています。これに似ています:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
lines = ax.plot([1,2,3,4])
legend = ax.legend(lines, loc=2)
legend.draggable()
plt.show()

エラーは次のとおりです。

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/matplotlib-1.3.x-py2.7-macosx-10.8-intel.egg/matplotlib/legend.py", line 1007, in draggable
update=update)
File "/Library/Python/2.7/site-packages/matplotlib-1.3.x-py2.7-macosx-10.8-intel.egg/matplotlib/legend.py", line 54, in __init__
use_blit=use_blit)
File "/Library/Python/2.7/site-packages/matplotlib-1.3.x-py2.7-macosx-10.8-intel.egg/matplotlib/offsetbox.py", line 1540, in __init__
DraggableBase.__init__(self, ref_artist, use_blit=use_blit)
File "/Library/Python/2.7/site-packages/matplotlib-1.3.x-py2.7-macosx-10.8-intel.egg/matplotlib/offsetbox.py", line 1462, in __init__
self.canvas = self.ref_artist.figure.canvas
AttributeError: 'DraggableLegend' object has no attribute 'ref_artist'

このエラーを説明できるもの、またはドラッグ可能な凡例が Mac で機能しない理由を Web 上で見つけられませんでした。私はこれをmatplotlibのドキュメントで見つけました: Note that not all kinds of artist are supported by the legend yet、しかしそれがここに当てはまるかどうかはわかりません。

誰でも助けることができますか?

4

1 に答える 1

2

osxバックエンドでは機能しません。このバックエンドはまだ少し実験的で、いくつかの機能 (サブピクセルの線幅など) が欠けています。ただし、試したところ、ドラッグ可能な凡例はQt4AggおよびGTKAggバックエンドで動作します。おそらく、これらのいずれかがインストールされていますか?バックエンドはさまざまな方法で切り替えることができます。

import matplotlib
matplotlib.use('Qt4Agg')  

ipythonインタラクティブで:

ipython --pylab=qt

または変更することさえあり.matplotlibrcます:

backend      : Qt4Agg
于 2013-05-01T12:36:02.447 に答える