python |绘图库 | plt.fill_between 两条线围成一个圆

python | matplotlib | plt.fill_between two lines in a Circle

嘿,有人可以帮助我吗?

我想填充线条之间的区域。我已经完成了两个区域,但是另一个区域,我不知道我是怎么做到的。

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

# Constellation:
M = 8
A = 1 # Amplitude
m = np.arange(0,M) #all information symbols m={0,1,...,M-1}
I = A*np.cos(m/M*2*np.pi)
Q = A*np.sin(m/M*2*np.pi)
constellation = I + 1j*Q #reference constellation  

# Plotting the fig: 
fig,ax = plt.subplots(figsize=[10,10])

ax.plot([-1/2,0],[-1,0],'k--')
ax.plot([1/2,0],[-1,0],'k--')
ax.plot([1/2,0],[1,0],'k--')
ax.plot([-1/2,0],[1,0],'k--')

ax.plot([-1,0],[-1/2,0],'k--')
ax.plot([1,0],[1/2,0],'k--')
ax.plot([-1,0],[1/2,0],'k--')
ax.plot([1,0],[-1/2,0],'k--')

plt.fill_between([0,-1], [0,-1/2],[0,1/2],color='gray',alpha=0.5)
plt.fill_between([0,1], [0,-1/2],[0,1/2],color='gray',alpha=0.5)



circle =  plt.Circle((0,0),1,color='k',linestyle='--',fill=False)
ax.add_patch(circle)



ax.scatter(np.real(constellation),np.imag(constellation),c='c',s=20**2)


ax.set_xlabel(r'I-Axis $Real\{x\}$')
ax.set_ylabel(r'Q-Axis $Imag\{x\}$')
plt.tight_layout();

这是我当前的输出: Image

谢谢!

有类似功能fill_betweenx(y, x1, x2)

也可以用plt.fill(x, y)polygon

文档:fill_betweenx(), fill()

import matplotlib.pyplot as plt

fig,ax = plt.subplots(figsize=[10,10])

ax.plot([-1/2,0],[-1,0],'k--')
ax.plot([1/2,0],[-1,0],'k--')
ax.plot([1/2,0],[1,0],'k--')
ax.plot([-1/2,0],[1,0],'k--')

ax.plot([-1,0],[-1/2,0],'k--')
ax.plot([1,0],[1/2,0],'k--')
ax.plot([-1,0],[1/2,0],'k--')
ax.plot([1,0],[-1/2,0],'k--')

plt.fill_between([0,-1], [0,-1/2],[0,1/2],color='gray',alpha=0.5)
plt.fill_between([0,1], [0,-1/2],[0,1/2],color='gray',alpha=0.5)

plt.fill_betweenx([0,-1],[0,-1/2],[0,1/2],color='green',alpha=0.5)
plt.fill_betweenx([0,1],[0,-1/2],[0,1/2],color='green',alpha=0.5)

plt.fill([-1, 0, -1/2], [-1/2, 0, -1], color='red',alpha=0.5)
plt.fill([1, 0, 1/2], [1/2, 0, 1], color='red',alpha=0.5)

plt.show()