首页 文章

使用axvspan绘制象限

提问于
浏览
1

我试图在一个范围为[-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 回答

  • 0

    虽然's probably doable messing around with transforms, I think you'可能比 axvspan 更有运气 . 我建议fill_between, where the limits are simply provided in Data coordinates .

    PS:对于你的虚线,你可能想看看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

相关问题