Python matplotlib:Qt4Agg工具栏';这是一只令人讨厌的虫子
我使用Qt4Agg(PyQt4)作为在matplotlib中渲染绘图的后端。这是一个非常有用的工具栏,带有一个非常有用的按钮“编辑曲线和轴参数”。然而,每当我按下它,它就会给出一个错误。(我知道它很有用,因为它适用于条形图,但不适用于直线图:P) 在下图中可以清楚地看到原因和追溯 我认为这可能是matplotlib当前版本的一个bug,所以我在matplotlib的最新版本上尝试了这一点,但仍然给出了相同的错误 这是给出相同错误的最简单脚本(绘图与上面不同)- (我已经通过配置文件Python matplotlib:Qt4Agg工具栏';这是一只令人讨厌的虫子,python,matplotlib,toolbar,Python,Matplotlib,Toolbar,我使用Qt4Agg(PyQt4)作为在matplotlib中渲染绘图的后端。这是一个非常有用的工具栏,带有一个非常有用的按钮“编辑曲线和轴参数”。然而,每当我按下它,它就会给出一个错误。(我知道它很有用,因为它适用于条形图,但不适用于直线图:P) 在下图中可以清楚地看到原因和追溯 我认为这可能是matplotlib当前版本的一个bug,所以我在matplotlib的最新版本上尝试了这一点,但仍然给出了相同的错误 这是给出相同错误的最简单脚本(绘图与上面不同)- (我已经通过配置文件/etc/m
/etc/matplotlibrc
配置了后端)
请帮助我解决此问题。这似乎确实是matplotlib的Qt4表单编辑器中的一个错误 该错误似乎位于
matplotlib/backends/qt4\u editor/FormWidget.py
中的FormWidget.setup()
方法的某个部分内。在Windows上的matplotlib 1.1.0中(我无法重现该问题),它包含以下内容:
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)
Kubuntu Precise上的matplotlib v1.1.1rc(我可以在这里重现问题)将上面的第二行替换为
selindex = list(value).pop(0)
最终,两个版本都不正确
1.1.0版方法的问题是它不处理元组(元组是不可变的,没有pop
)方法,1.1.1rc版代码的问题是value
的第一个元素应该被删除,但它只会从list(value)的临时列表中删除
创建
此错误在1.1.1版中已修复。我刚刚下载并安装了此版本,无法再重现此问题。这似乎确实是matplotlib的Qt4表单编辑器中的一个错误 该错误似乎位于
matplotlib/backends/qt4\u editor/FormWidget.py
中的FormWidget.setup()
方法的某个部分内。在Windows上的matplotlib 1.1.0中(我无法重现该问题),它包含以下内容:
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)
Kubuntu Precise上的matplotlib v1.1.1rc(我可以在这里重现问题)将上面的第二行替换为
selindex = list(value).pop(0)
最终,两个版本都不正确
1.1.0版方法的问题是它不处理元组(元组是不可变的,没有pop
)方法,1.1.1rc版代码的问题是value
的第一个元素应该被删除,但它只会从list(value)的临时列表中删除
创建
此错误在1.1.1版中已修复。我刚刚下载并安装了此版本,无法再重现此问题。谢谢Luke:)。当我在Ubuntu12.04机器上测试它时,我以为我有了最新的版本,但事实并非如此。这是1.1.1rc。所以我刚从github安装了最新版本,现在它工作得非常好!谢谢。谢谢卢克:)。当我在Ubuntu12.04机器上测试它时,我以为我有了最新的版本,但事实并非如此。这是1.1.1rc。所以我刚从github安装了最新版本,现在它工作得非常好!非常感谢。