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
。
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()
嘿,有人可以帮助我吗?
我想填充线条之间的区域。我已经完成了两个区域,但是另一个区域,我不知道我是怎么做到的。
这是我的代码:
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
。
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()