python - matplotlib 可拖动图例在 Mac OS 10.8 上不可用吗?

标签 python macos matplotlib legend

我有一个小的 python 程序,它接收数据并使用 matplotlib (v1.3.x) 绘制它。该情节有一个可拖动的图例。它在 Windows 上渲染良好,但在 Mac (OS 10.8.3) 上出现错误。该代码首先创建一个图窗,然后使用该图窗创建一个子图,该子图返回一个轴。我正在使用坐标区对象来创建图例。与此类似:

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 上不起作用的内容。我确实在 matplotlib 文档中找到了这一点:请注意,并非所有类型的艺术家都受图例支持,但我不知道这是否适用于此。

有人可以帮忙吗?

最佳答案

它不适用于 osx 后端。这个后端仍然有点实验性,它缺少一些功能(例如子像素线宽)。但是,我刚刚尝试过,可拖动图例可以与 Qt4Agg 和 GTKAgg 后端一起使用。也许您安装了其中之一?您可以通过多种方式切换后端:

import matplotlib
matplotlib.use('Qt4Agg')  

与 ipython 交互:

ipython --pylab=qt

甚至更改.matplotlibrc:

backend      : Qt4Agg

关于python - matplotlib 可拖动图例在 Mac OS 10.8 上不可用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317499/

相关文章:

python - Python 中时间戳范围的迭代

macos - 在没有密码提示的情况下无法保存文件 - Sublime Text 3

swift - 如何允许粘贴(cmd+v)到 NSTableView 单元格中?

python - 如何使用 Python 裁剪通过鼠标单击选择的区域?

python - Python 中大数的高斯核密度估计 (KDE)

python - 执行 Django manage.py syncdb 时出错

python - Python 中的 raise 会提高什么?

来自 bytearray 的 Python IEEE754

cocoa - 以编程方式强制 Cocoa 应用程序以 32 位模式启动

python - 如何在 python 中使用 matplotlib 在图像上绘制图形?