如何在图表中显示多种背景颜色?
How to display multiple background colors in a chart?
我正在尝试绘制性能图,我希望它的某些部分根据 CSI 值使用不同的颜色。
到目前为止,我能够绘制全白背景的性能图。
line_label=[]
line_str=[]
line_label2=[]
line_str2=[]
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
x = np.arange(0,1.01,0.01)
y = np.arange(0,1.01,0.01)
xi,yi = np.meshgrid(x, y)
#Calculate bias and CSI; set contour levels
bias = yi/xi
blevs = [0.1, 0.25, 0.5, 0.75, 1, 1.25, 2.5, 5, 10]
csi = 1/( (1/xi) + (1/yi) - 1 )
csilevs = np.arange(0.1,1,0.1)
#Axis labels, tickmarks
ax.set_xlabel('Success Ratio (1 - False Alarm Ratio)',fontsize=16,fontweight='bold',labelpad=30)
ax.set_ylabel('Probability of Detection',fontsize=16,fontweight='bold')
ax.set_xticks(np.arange(0,1.1,0.1))
ax.set_yticks(np.arange(0,1.1,0.1))
plt.setp(ax.get_xticklabels(),fontsize=13)
plt.setp(ax.get_yticklabels(),fontsize=13)
#Second y-axis for bias values < 1
ax2 = ax.twinx()
ax2.set_yticks(blevs[0:5])
plt.setp(ax2.get_yticklabels(),fontsize=13)
#Axis labels for bias values > 1
ax.text(0.1,1.015,'10',fontsize=13,va='center',ha='center')
ax.text(0.2,1.015,'5',fontsize=13,va='center',ha='center')
ax.text(0.4,1.015,'2.5',fontsize=13,va='center',ha='center')
ax.text(0.8,1.015,'1.25',fontsize=13,va='center',ha='center')
#Plot bias and CSI lines at specified contour intervals
cbias = ax.contour(x,y,bias,blevs,colors='black',linewidths=1,linestyles='--')
ccsi = ax.contour(x,y,csi,csilevs,colors='gray',linewidths=1,linestyles='-')
plt.clabel(ccsi,csilevs,inline=True,fmt='%.1f',fontsize=14,fontweight='bold')
这是当前结果
https://imgur.com/a/Uojy2Ja。
我想要从 0、0.1、0.2、0.3 等开始的灰色曲线之间的不同颜色
添加
ax.contourf(x,y,csi, np.r_[0, csilevs, 1],linestyles='-')
之前 cbias = ...
np._r
在 0 和 1 处添加级别,因此它们也被填充
我正在尝试绘制性能图,我希望它的某些部分根据 CSI 值使用不同的颜色。
到目前为止,我能够绘制全白背景的性能图。
line_label=[]
line_str=[]
line_label2=[]
line_str2=[]
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
x = np.arange(0,1.01,0.01)
y = np.arange(0,1.01,0.01)
xi,yi = np.meshgrid(x, y)
#Calculate bias and CSI; set contour levels
bias = yi/xi
blevs = [0.1, 0.25, 0.5, 0.75, 1, 1.25, 2.5, 5, 10]
csi = 1/( (1/xi) + (1/yi) - 1 )
csilevs = np.arange(0.1,1,0.1)
#Axis labels, tickmarks
ax.set_xlabel('Success Ratio (1 - False Alarm Ratio)',fontsize=16,fontweight='bold',labelpad=30)
ax.set_ylabel('Probability of Detection',fontsize=16,fontweight='bold')
ax.set_xticks(np.arange(0,1.1,0.1))
ax.set_yticks(np.arange(0,1.1,0.1))
plt.setp(ax.get_xticklabels(),fontsize=13)
plt.setp(ax.get_yticklabels(),fontsize=13)
#Second y-axis for bias values < 1
ax2 = ax.twinx()
ax2.set_yticks(blevs[0:5])
plt.setp(ax2.get_yticklabels(),fontsize=13)
#Axis labels for bias values > 1
ax.text(0.1,1.015,'10',fontsize=13,va='center',ha='center')
ax.text(0.2,1.015,'5',fontsize=13,va='center',ha='center')
ax.text(0.4,1.015,'2.5',fontsize=13,va='center',ha='center')
ax.text(0.8,1.015,'1.25',fontsize=13,va='center',ha='center')
#Plot bias and CSI lines at specified contour intervals
cbias = ax.contour(x,y,bias,blevs,colors='black',linewidths=1,linestyles='--')
ccsi = ax.contour(x,y,csi,csilevs,colors='gray',linewidths=1,linestyles='-')
plt.clabel(ccsi,csilevs,inline=True,fmt='%.1f',fontsize=14,fontweight='bold')
这是当前结果 https://imgur.com/a/Uojy2Ja。 我想要从 0、0.1、0.2、0.3 等开始的灰色曲线之间的不同颜色
添加
ax.contourf(x,y,csi, np.r_[0, csilevs, 1],linestyles='-')
之前 cbias = ...
np._r
在 0 和 1 处添加级别,因此它们也被填充