pan*_*ank 2 python plot matplotlib sympy python-3.x
我对使用Sympy如何处理图形有一些疑问。
我的代码:
from sympy import *
x, y = symbols("x y")
plot_implicit(Eq(x**2 + y**2, 4), (x, -3, 3), (y, -3, 3))
Run Code Online (Sandbox Code Playgroud)
1)获得沿x轴拉伸的图形。
如何使曲线看起来像圆形?
2)如何向图表添加其他元素。例如,点O(0,0)和线y = x。
小智 5
根据plot.py的文档字符串,您可以通过_backend属性获取Matplotlib轴的后端包装和SymPy使用的图形,然后像其他任何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()
Run Code Online (Sandbox Code Playgroud)
Sympy Plot对象具有append和extend方法,该方法允许将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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |