在极坐标轴上绘制两条直线之间的分段填充(matplotlib)

2024-10-01 07:42:29 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我有一个用线表示日出(蓝色)、中午(红色)、日落(橙色)和一个物体(绿色)方向的图。我想在日出和日落之间创建一个黄色阴影区域。我想到了plt.fill方法,但当我添加plt.fill_between(theta1, theta2, R1, alpha=0.2)时,它似乎不起作用。我想那是因为这两条线不相交。我当前的极轴图如下:

enter image description here

脚本的相关部分是:

    #for object
    theta0 = np.deg2rad([190, 190])
    print ("theta0= %s" %theta0)    
    R0 = [0,0.4]

    #for sunrise
    theta1 = np.deg2rad([105, 105])
    print ("theta1= %s" %theta1)    
    R1 = [0,1]

    #for sunset
    theta2 = np.deg2rad([254, 254])
    print ("theta2= %s" %theta2)    
    R1 = [0,1]

    #for midday 
    theta3 = np.deg2rad([0.2, 0.2])
    print ("theta3= %s" %theta3)    
    R3 = [0,1]

    ax.set_theta_zero_location("S")
    ax.set_theta_direction(-1)

    ax.plot(theta1,R1, theta2, R1, theta0, R0, lw=5)

    #plt.fill_between(theta1, theta2, R1, alpha=0.2) #does not work


    plt.savefig('plot.png')

我还考虑了用正午的方位角,然后用宽度,从日落和日出之间的角度差计算出来,然后用这些来生成阴影区域。我该怎么做呢?我希望在日出和日落之间有一个黄色的阴影区域,因此我认为从正午的θ生成{}是个好主意。我试着复制ax来形成{},然后我可以用它来显示中午的{}(阴影区)。但随着ax2的加入,它似乎把情节搞得一团糟。我还能怎么解决这个问题?在


Tags: 区域fornppltaxfillprint阴影
1条回答
网友
1楼 · 发布于 2024-10-01 07:42:29

要在极坐标图上使用填充,必须将其称为

plt.fill_between(angles_to_go_through, minimum_radii, maximum_radii)

例如,在0到90度之间填充

^{pr2}$

这会产生一个像

polar fill

在你的情况下,你会打电话来

ax.fill_between(
    np.linspace(theta1[0], theta2[0], 100),  # Need high res or you'll fill a triangle
    0,
    1,
    alpha=0.2,
    color='y',
)

相关问题 更多 >