使用axvspan绘制象限图

3

我正在尝试在范围为[-0.2,1.4]和[-0.2,1.4]的图中绘制四个彩色象限。问题在于,我在使用plt.axvspan时很难对齐象限的y轴坐标:

roc_t = 0.43652219
roc_v = 0.82251961

plt.figure()
plt.figure(figsize=(15,12))
plt.xlim(-0.2,1.4)
plt.ylim(-0.2,1.4)
plt.scatter([nTPredict], [nVPredict], color = 'red', marker='X', s=500)

plt.plot([T_Cutoff,T_Cutoff],[-0.2,1.4],color = 'black',linestyle='dashed',lw=2)
plt.plot([1.4,-0.2],[(V_Cutoff),(V_Cutoff)],color = 'black',linestyle='dashed',lw=2)

plt.axvspan(-0.2, roc_t, 0, roc_v, alpha=0.3, color='#1F98D0')#blue
plt.axvspan(roc_t, 1.4, 0, roc_v, alpha=0.3, color='#F9D307')#yellow
plt.axvspan(-0.2, roc_t, roc_v, 1, alpha=0.3, color='#F38D25')#orange
plt.axvspan(roc_t, 1.4, roc_v, 1, alpha=0.3, color='#DA383D')#red

plt.show()
plt.close()

这导致了这个结果:

因此,顶部和底部行应该在roc_v处结束/开始(由水平虚线表示)。我知道在plt.axvspan中,ymin和ymax是[0,1]的相对比例,但我无法弄清楚如何使象限与水平虚线对齐。

我如何确定ymin和ymax的roc_v值。我尝试了(roc_v * 1.6),这似乎是合理的答案,但这仍然不能使它对齐。否则,是否有其他方法可以绘制这些背景象限?

1个回答

2
虽然通过转换可能是可行的,但我认为您使用axvspan可能会遇到更多麻烦。我建议使用fill_between,其中限制仅以数据坐标提供。
附注:对于虚线,您可能需要查看axvline()axhline(),它们专门用于此目的。
roc_t = 0.43652219
roc_v = 0.82251961

T_Cutoff = roc_t
V_Cutoff = roc_v

fig,ax = plt.subplots(figsize=(15,12))
ax.set_xlim(-0.2,1.4)
ax.set_ylim(-0.2,1.4)


ax.axvline(T_Cutoff,color = 'black',linestyle='dashed',lw=2)
ax.axhline(V_Cutoff,color = 'black',linestyle='dashed',lw=2)

ax.fill_between([-0.2, roc_t],-0.2,roc_v,alpha=0.3, color='#1F98D0')  # blue
ax.fill_between([roc_t, 1.4], -0.2, roc_v, alpha=0.3, color='#F9D307')  # yellow
ax.fill_between([-0.2, roc_t], roc_v, 1.4, alpha=0.3, color='#F38D25')  # orange
ax.fill_between([roc_t, 1.4], roc_v, 1.4, alpha=0.3, color='#DA383D')  # red

plt.show()

enter image description here


有没有可能在第一象限中的东北方向上有一个渐变?谢谢。 - Rys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接