使用 for 循环的 Matplotlib 错误栏(针对不同的颜色)

Matplotlib error bar using a for loop (for different colors)

我想绘制一组不同颜色的误差线。我的数据点也有不同的颜色。

目前我正在使用:

colours = ['r','b','g','k','m']
labels = ['200Mpc','300Mpc','340Mpc','400Mpc','450Mpc']

fig2 = plt.figure(figsize=(7,5))
ax3 = fig2.add_subplot(111)
for a,b,c,d,e,f in zip(r0_array,gamma_array,r0_error,gamma_error,colours,labels):
    ax3.scatter(r0_array,gamma_array,c=e,label=f)
    ax3.errorbar(r0_array,gamma_array,xerr=c,yerr=d,fmt='o',color=e)
ax3.set_xlabel('$r_{0}$',fontsize=14)
ax3.set_ylabel(r'$\gamma$',fontsize=14)
ax3.legend(loc='best')
fig2.show()

这会导致图形的误差线和颜色被过度绘制。

我可以看到 for 循环再次 运行 5 次,因为我可以看到所有颜色,但我不明白为什么会这样!

我发现了我犯的非常愚蠢的错误!!

for 循环之后,每个值,即 a,b,c,d,e,f 取数组 r0_array,gamma_array 等中的值。

我每次都调用整个数组 r0_array, gamma_array,etc..,而不是在 scatter 中调用 a,b,c,d

for a,b,c,d,e,f in zip(r0_array,gamma_array,r0_error,gamma_error,colours,labels):
        ax3.scatter(a,b,color=e,label=f)
        ax3.errorbar(a,b,xerr=c,yerr=d,fmt='o')

已解决问题。