我正在尝试为x轴上的每个点制作一个具有不同颜色的误差线图。错误条形图本身可以很好地显示,但是当我尝试使用颜色图时它会炸弹,因此我必须做错了。这是我正在尝试做的一个人为的示例:
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:Invalid rgba arg“ {0:'b',1:'g',2:'c',3:'m'}”
有可能做我想做的事情吗?我想做的是使误差条形图中的4个点中的每一个都有不同的颜色。我真的不需要连接这些点的线。感谢任何帮助/建议。
我已经提到过,您可以遍历每个特定的点/颜色。
另一个解决方案是scatter
在您的errorbar
绘图中使用一个绘图,就像这个问题一样。代码如下
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()
结果如下
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句