问题是使用pylab,numpy&amp ;;绘制一个内部有色的8点星。 matplot。
我已经设置了顶点xy坐标,它给出了星星的边框:
a=linspace(0,2*pi,2*n-1)
x=[]
y=[]
per=0
ang=list(a)
for i in range(2*n-1):
if i%2==0:
x.append(cos(ang[i]))
y.append(sin(ang[i]))
else:
x.append(0.5*cos(ang[i]))
y.append(0.5*sin(ang[i]))
plot (x,y)
现在我需要填写它,但我没有找到解决方案。
编辑:
我插入了这一行:
u=linspace(0,1)
for k in u:
for i in range(2*n-1):
if i%2==0:
x.append(k*cos(ang[i]))
y.append(k*sin(ang[i]))
else:
x.append(0.5*k*cos(ang[i]))
y.append(0.5*k*sin(ang[i]))
通过区域,积分等问题的简单数学概念解决(:
答案 0 :(得分:1)
循环可以很容易地在numpy中矢量化,填充多边形可以通过matplotlib fill
命令绘制。这是一个例子:
import numpy as np
import matplotlib.pyplot as plt
n = 8
# angles of outer points
phi = np.linspace(0, 2*np.pi, tips+1)
# generate outer and inner (shifted) coordinates
x = np.array([np.sin(phi),
0.5 * np.sin(phi + phi[1]/2)]).flatten(order='F')
y = np.array([np.cos(phi),
0.5 * np.cos(phi + phi[1]/2)]).flatten(order='F')
# plot filled
plt.fill(x,y)
plt.show()