gpt4 book ai didi

python - 如何自定义并向 Sympy 图中添加额外元素?

转载 作者:行者123 更新时间:2023-11-28 21:44:26 36 4
gpt4 key购买 nike

我有几个关于如何使用 Sympy 处理图形的问题。

我的代码:

from sympy import *
x, y = symbols("x y")
plot_implicit(Eq(x**2 + y**2, 4), (x, -3, 3), (y, -3, 3))

1) 图形是沿 x 轴拉伸(stretch)得到的。

enter image description here

如何使曲线看起来像一个圆?

2) 如何向图表中添加其他元素。例如,点 O(0, 0) 和直线 y = x。

enter image description here

最佳答案

根据plot.py的文档字符串,您可以通过 _backend 属性获取 SymPy 使用的 Matplotlib 轴和图形的后端包装器,然后像任何其他 Matplotlib 对象一样修改属性。检查这个例子:

import matplotlib.pyplot as plt
import numpy as np
%matplotlib notebook
from sympy import *

x, y = symbols("x y")
hp = plot_implicit(Eq(x**2 + y**2, 4), (x, -3, 3), (y, -3, 3))
fig = hp._backend.fig
ax = hp._backend.ax
xx = yy = np.linspace(-3,3)
ax.plot(xx,yy) # y = x
ax.plot([0],[0],'o') # Point (0,0)
ax.set_aspect('equal','datalim')
fig.canvas.draw()

Sympy Plot 对象具有附加和扩展方法,允许将 Plot 对象添加到其他对象,但这不起作用(至少对我和使用 Jupyter 而言)。

另一种选择是只使用 Matplotlib:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(1,1)
xx,yy = np.linspace(-3,3), np.linspace(-3,3)
x,y = np.meshgrid(xx,yy)
ax.contour(x, y, (x**2+y**2-4), [0]);
ax.plot([0],[0],"o")
ax.plot(xx,yy)
ax.set_aspect('equal','datalim')

关于python - 如何自定义并向 Sympy 图中添加额外元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40747474/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com