如何使用Sympy绘图在特定的x坐标上添加标记
问题描述
我有一个符号函数、一个x坐标序列和一个使用";Plot&Quot;绘制的图形。
import numpy as np
import sympy as sp
x = sp.Symbol('x')
xs = np.linspace(-2, 3, 5) #[-2. -0.75 0.5 1.75 3. ]
ys = sp.cos(2*x)*(sp.sin(2*x) + 1.5)+sp.cos(x)
graph = sp.plot(ys, xlim=[-2,3])
如何从Xs变量在X坐标处的函数上绘制标记?
我得到的图表:
我希望获得的图表:
解决方案
sympy仅支持有限的打印功能。此外,也没有散点图功能。一般来说,症状和麻木不能很好地混合在一起。通常,函数是lambdified,然后通过matplotlib绘制。
如果您真的想完全保持在症状内部,您可以滥用implicit surfaces来表示一个点:
import numpy as np
import sympy as sp
x = sp.Symbol('x')
y = sp.Symbol('y')
xs = np.linspace(-2, 3, 5) # [-2. -0.75 0.5 1.75 3. ]
ys = sp.cos(2 * x) * (sp.sin(2 * x) + 1.5) + sp.cos(x)
plot1 = sp.plot(ys, xlim=[-2.2, 3.2], show=False)
rad = 0.2
plot2 = sp.plot_implicit(x ** 2 + y ** 2 < 0.2 ** 2, line_color='red', show=False)
for xi in xs:
yi = ys.subs(x, xi).evalf()
plot2 = sp.plot_implicit((x - xi) ** 2 + (y - yi) ** 2 < rad ** 2, line_color='red', show=False)
plot1.append(plot2[0])
plot1.show()
相关文章