更新到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);
哪个效果很好,但我有一些我不想改变的脚本。有没有其他方法可以解决这个问题?
答案 0 :(得分:0)
这是一个令人讨厌的例外。不幸的是,除了修改数量或Matplotlib源代码之外,我想不出任何真正好的解决方案。我会将此作为错误发布到Matplotlib issues。我建议将它发布到Matplotlib而不是数量,因为Matplotlib v1.3.0似乎没有发生这个问题,但有可能在数量方面更容易修复。
所以我认为你有三个选择
x
更改为x.magnitude
。x.magnitude
,以及可能在使用x
单位的轴上放置标签,对单位进行任何转换(正如Matplotlib尝试的那样) do),或者你想用单位做的任何其他事情。