我最近重新安装了我的OSX,Python和我的所有依赖项,但是当运行以前工作的旧代码时(请参阅问题:Wrong offset when using math mode and subscripts in Matplotlib and OSX)现在抛出异常和分段错误。完整代码在链接的问题中,并且没有任何更改。 这是我得到的错误:
File "matplotlib-stacked.py", line 57, in <module>
plt.stackplot(NP.arange(num_cols)+1,data,colors=colors)
File "/usr/local/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3326, in stackplot
ret = ax.stackplot(x, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py", line 1811, in inner
return func(ax, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 4439, in stackplot
return mstack.stackplot(self, x, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/matplotlib/stackplot.py", line 66, in stackplot
axes.set_color_cycle(colors)
File "/usr/local/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 1126, in set_color_cycle
self.set_prop_cycle('color', clist)
File "/usr/local/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 1112, in set_prop_cycle
prop_cycle = cycler(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/matplotlib/rcsetup.py", line 720, in cycler
vals = validator(vals)
File "/usr/local/lib/python2.7/site-packages/matplotlib/rcsetup.py", line 90, in f
raise ValueError(msg)
ValueError: 's' must be of type [ string | list | tuple ]
Segmentation fault: 11
我不知道在哪里看,熟悉matplotlib的人遇到过这个问题? python启动器似乎试图打开交互式绘图窗口,但后来我得到了分段错误。
答案 0 :(得分:1)
我发现实际上有两个解决方法:
我设法将问题与传递给stackplot
方法的颜色隔离开来。事实证明,matplotlib.pyplot.stackplot
与matplotlib.cm.rainbow
助手提供的颜色搭配不是很好。将RGBA的颜色转换为十六进制解决了这个问题。
colors = cm.rainbow(NP.linspace(0, 1, num_cols))
colors = [matplotlib.colors.rgb2hex(i) for i in colors]
然后我注意到我没有使用最新版本的matplotlib。从1.5.0升级到1.5.1也解决了问题(无论使用何种颜色格式)。
我希望这能帮助遇到同样神秘问题或无法升级matplotlib的人。