2014-10-10 180 views
0

我想为沿x轴的每个点使用不同颜色的误差线图。错误条形图本身很好,但是当我尝试使用色彩映射时会炸弹,所以我必须做错了。这里是什么,我试图做一个人为的例子:matplotlib errorbar plot - 使用自定义色彩地图

import matplotlib.pyplot as plt 

colors = ["b","g","c","m","y","k","r","g","c","m","y","k", 
      "b","g","c","m","y","k","r","g","c","m","y","k"] 

xlabels = ['A','B','8','14'] 

xval = [0, 1, 2, 3] 
yval = [0, 1, 4, 9] 
yerr = [0.5, 0.4, 0.6, 0.9] 


cmap = dict(zip(xval,colors)) 

现在我运行这个后,我可以去:

plt.errorbar(xval, yval, yerr=yerr, color='b') 

,这给了我如下所示(图表也就是说,它工作但是当我尝试这样做:

plt.errorbar(xval, yval, yerr=yerr, color=cmap) 

它给了我一个错误,如“ValueError异常:to_rgba:Inval id rgba arg“{0:'b',1:'g',2:'c',3:'m'}”

是否可以做我想做的事情?我试图做的是让错误栏图表中的每个4点具有不同的颜色。我不需要真正连接点的线。感谢任何帮助/建议。

errorbar chart

+0

那如果你改变了每一点的颜色的循环? – nicoguaro 2014-10-10 03:06:23

+0

确实我可以这样做,我确实考虑过,但希望能够将其完全传递给matplotlib,并让matplotlib使其工作。我不知道......也许我会被pythonic aesthics带走,毕竟应该做循环;〜)。如果你看看我在这个例子中做了什么,你会说整个事情都是笨重的,但它在实际的程序中做得更加优雅。 – 2014-10-10 17:25:15

+0

好吧,我会写一个答案,然后... – nicoguaro 2014-10-10 17:53:13

回答

2

我已经提到的,你可以在每一个特定的点/色环。

另一种解决方案是在errorbar图中使用scatter图,就像这个question一样。代码如下

import matplotlib.pyplot as plt 

colors = ["b","g","c","m","y","k","r","g","c","m","y","k", 
      "b","g","c","m","y","k","r","g","c","m","y","k"] 

xlabels = ['A','B','8','14'] 

xval = [0, 1, 2, 3] 
yval = [0, 1, 4, 9] 
yerr = [0.5, 0.4, 0.6, 0.9] 

plt.scatter(xval, yval, c=colors, s=50, zorder=3) 
plt.errorbar(xval, yval, yerr=yerr, zorder=0, fmt="none", 
      marker="none") 

plt.savefig("scatter_error.png", dpi=300) 
plt.show() 

结果如下

enter image description here

+1

行了。很光滑 - 谢谢! – 2014-10-10 20:32:21

相关问题