Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 丘疹_Python_Matplotlib_Geometry - Fatal编程技术网

Python 丘疹

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 =

我想知道是否有人知道用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 = [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()