Matplotlib:Qt4Agg工具栏令人讨厌的错误

matplotlib: Qt4Agg toolbaramp;#39;s irritating bug(Matplotlib:Qt4Agg工具栏令人讨厌的错误)

本文介绍了Matplotlib:Qt4Agg工具栏令人讨厌的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Qt4Agg(PyQt4)作为后端来呈现matplotlib中的绘图。这有一个非常有用的工具栏和一个非常有用的按钮‘编辑曲线和轴参数’。然而,每当我按下它时,它都会给出错误。(我知道它很有用,因为它适用于条形图,但不适用于折线图:p)。

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

我认为这可能是当前版本的matplotlib的错误,所以我在最新版本的matplotlib上进行了尝试,但仍然出现相同的错误。

这是给出相同错误的最简单脚本(情节将与上面不同)-

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

(我已经通过配置文件/etc/matplotlibrc配置了后台)

请帮助我解决此问题。

推荐答案

这似乎确实是matplotlib的Qt4表单编辑器中的错误。

错误似乎出现在matplotlib/backends/qt4_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 Precision(我可以在那里重现该问题)上的matplotlib v1.1.1rc将上述第二行替换为

            selindex = list(value).pop(0)

最终,两个版本都不正确。

1.1.0版方法的问题是它不处理元组(元组是不可变的,并且没有pop方法),而1.1.1rc版代码的问题是应该删除value的第一个元素,但它只从list(value)创建的临时列表中删除。

此错误已在1.1.1版中修复。我刚刚下载并安装了此版本,无法再重现该问题。

这篇关于Matplotlib:Qt4Agg工具栏令人讨厌的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:Matplotlib:Qt4Agg工具栏令人讨厌的错误

基础教程推荐