matplotlib 1.3.1不适用于Python数量包

时间:2013-11-11 18:35:28

标签: python matplotlib

更新到matplotlib 1.3.1后,它停止使用数量包。例如:

import matplotlib.pyplot as plt
import quantities as pq
import numpy as np
t = np.arange(0,10,0.1) * pq.sec
x = np.arange(0,10,0.1)**2 * pq.m
plt.plot(t,x)

带来一个冗长,丑陋的异常日志,以“调用Python对象时超出最大递归深度”结束。这似乎是matplotlib.units的get_converter()方法和数量数组的问题。

我发现问题的方法是:

plt.plot(t.magnitude,x.magnitude);

哪个效果很好,但我有一些我不想改变的脚本。有没有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

这是一个令人讨厌的例外。不幸的是,除了修改数量或Matplotlib源代码之外,我想不出任何真正好的解决方案。我会将此作为错误发布到Matplotlib issues。我建议将它发布到Matplotlib而不是数量,因为Matplotlib v1.3.0似乎没有发生这个问题,但有可能在数量方面更容易修复。

所以我认为你有三个选择

  1. 执行您的建议,将x更改为x.magnitude
  2. 编写自己的绘图包装器,执行x.magnitude,以及可能在使用x单位的轴上放置标签,对单位进行任何转换(正如Matplotlib尝试的那样) do),或者你想用单位做的任何其他事情。
  3. 将Matplotlib安装降级到1.3.0版。