如何使用Sympy绘图在特定的x坐标上添加标记

2022-04-06 00:00:00 python sympy

问题描述

我有一个符号函数、一个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()

相关文章