Matplotlib 尝试通过基本方程 ( x**2 + y**2 = 9) 画一个圆

DS_*_*DS_ 5 python matplotlib

我正在尝试绘制一些数学方程。使用下面的代码几乎得到了一个椭圆而不是圆形。有没有办法改善形状..我尝试增加步数。不确定另一个模块是否会更好或者是否真的需要?我也可以以某种方式给出方程作为输入..所以我不必使用 np.sqrt 。我浏览了一些已经回答的问题,但它们要么太具体,要么太复杂。所以请不要将其标记为重复。只是在这里寻找通用解决方案,因为我还需要绘制抛物线和双曲线。

import numpy as np
import matplotlib.pyplot as plt
    
x = np.arange(0, 1000 , 0.001)
y = np.sqrt(9 - np.power(x,2))

# Plot the points using matplotlib
plt.plot(x, y)

plt.show()
Run Code Online (Sandbox Code Playgroud)

=================================================== ===== 使用一些建议,也尝试绘制 y 和 -y ..但是圆圈在左侧没有完成。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.01)
y = np.sqrt(9 - np.power(x, 2))

# Plot the points using matplotlib
plt.gca().set_aspect('equal')
plt.plot(x, y)
plt.plot(x, -y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

小智 2

首先,您需要设置一个包含您需要的所有值的 linspace,我看到您尝试绘制一个半径为 3 的圆。

x = np.linspace(-5.0, 5.0, 1000)
y = np.linspace(-5.0, 5.0, 1000)
Run Code Online (Sandbox Code Playgroud)

之后,使用 numpy 制作网格并使用 matplotlib 绘制轮廓。请注意,这F是您的圆方程。

X, Y = np.meshgrid(x,y)

F = X**2 + Y**2 - 9.0
Run Code Online (Sandbox Code Playgroud)

最后,只需调用 matplotlib 并将图形绘制为轮廓。

fig, ax = plt.subplots()

ax.contour(X,Y,F,[0])

ax.set_aspect(1)

plt.title('My Circle', fontsize=8)

plt.xlim(-10,10)
plt.ylim(-10,10)

plt.grid(linestyle='--')

plt.show()
Run Code Online (Sandbox Code Playgroud)