我编写了一个代码(在python中),该代码每10度在一个圆的圆周上指向一个点:
rad = 75
originX = originY = 0
tenDegreePts = [[],[]]
for theta in range(0, 360, 10):
b = (np.cos(theta))*rad
a = (np.sin(theta))*rad
tenDegreePts[0].append(originX+b)
tenDegreePts[1].append(originY+a)
plt.plot(tenDegreePts[0],tenDegreePts[1],'o')
plt.ylim(-100,100)
plt.xlim(-100,100)
该程序可以完美运行,但是由于某些原因,圆具有更多的椭圆形状。此外,图中的点之间的距离也不相等:
(在图片中您看不到轴,但是它们在x和y上都从-100变为100)
您可以plt.axis('equal')
用来保持绘图的正确纵横比。
关于点不均匀分布的问题:您theta
以度为单位,但是三角函数期望它们的输入以弧度为单位。您可以将度数转换为弧度,乘以180,然后除以Pi,如代码中所示。
我还重写了一些代码,以更好地利用numpy的广播技巧。
import matplotlib.pyplot as plt
import numpy as np
originX = originY = 0
theta = np.linspace(0, 360, 37)
for rad in range(15, 85, 10):
tenDegreePtsX = np.cos(theta*np.pi/180) * rad + originX
tenDegreePtsY = np.sin(theta*np.pi/180) * rad + originY
plt.plot(tenDegreePtsX, tenDegreePtsY, 'o', ms=rad/10)
plt.ylim(-100,100)
plt.xlim(-100,100)
plt.axis('equal')
plt.show()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句