首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matplotlib试图通过基本方程( x**2 + y**2 = 9)画一个圆

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

Stack Overflow用户
提问于 2020-09-20 12:13:24
回答 1查看 248关注 0票数 4

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

代码语言:javascript
运行
复制
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()

===使用一些建议,尝试绘制y和-y。但是圆圈不会在左边完成。

代码语言:javascript
运行
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2020-09-20 12:29:52

首先,你需要设置一个包含所有你需要的值的linspace,我看到你试着画一个半径为3的圆。

代码语言:javascript
运行
复制
x = np.linspace(-5.0, 5.0, 1000)
y = np.linspace(-5.0, 5.0, 1000)

之后,使用numpy创建网格,并使用matplotlib绘制等高线。请注意,F是您的圆等式。

代码语言:javascript
运行
复制
X, Y = np.meshgrid(x,y)

F = X**2 + Y**2 - 9.0

最后,只需调用matplotlib并将图形绘制为等高线。

代码语言:javascript
运行
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63975431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档