使用 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')
已解决问题。
我想绘制一组不同颜色的误差线。我的数据点也有不同的颜色。
目前我正在使用:
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')
已解决问题。