Python 丘疹
我想知道是否有人知道用python绘制lemnicate的更优雅的方法(在公式方面或其他好主意方面是受欢迎的)。我从维基百科上获取了这个公式。但想知道是否有可能缩短公式或使其更好看Python 丘疹,python,matplotlib,geometry,Python,Matplotlib,Geometry,我想知道是否有人知道用python绘制lemnicate的更优雅的方法(在公式方面或其他好主意方面是受欢迎的)。我从维基百科上获取了这个公式。但想知道是否有可能缩短公式或使其更好看 import numpy as np import matplotlib.pyplot as plt %matplotlib inline alpha = 1 #plot a lemniskate t = np.linspace(0, 2*np.pi, num=1000) # 10^3 points x =
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
alpha = 1
#plot a lemniskate
t = np.linspace(0, 2*np.pi, num=1000) # 10^3 points
x = [alpha * np.sqrt(2)*np.cos(i) / (np.sin(i)**2+1) for i in t]
y = [alpha * np.sqrt(2)*np.cos(i)*np.sin(i) / (np.sin(i)**2+1) for i in t]
plt.plot(x, y)
Numpy数组支持“矢量化”操作。它们比遍历数组并从中创建列表更快、内存效率更高
因此,在这种情况下不需要列表理解。最好直接在t
上操作
例如:
import numpy as np
import matplotlib.pyplot as plt
alpha = 1
t = np.linspace(0, 2*np.pi, num=1000)
x = alpha * np.sqrt(2) * np.cos(t) / (np.sin(t)**2 + 1)
y = alpha * np.sqrt(2) * np.cos(t) * np.sin(t) / (np.sin(t)**2 + 1)
plt.plot(x, y)
plt.show()
此外,如果只需要形状,而不关心绝对值,则可以忽略常量:
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0, 2*np.pi, num=1000)
x = np.cos(t) / (np.sin(t)**2 + 1)
y = np.cos(t) * np.sin(t) / (np.sin(t)**2 + 1)
plt.plot(x, y)
plt.show()