You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Sympy plot在指定x坐标位置添加标记点

实现方法

Sympy的plot接口底层基于Matplotlib渲染,有两种常用方案可以添加指定坐标的标记:

方案1:调用底层Matplotlib接口(灵活性更高)

你可以直接获取Sympy绘图对象对应的Matplotlib坐标轴实例,用常规Matplotlib语法添加标记,完整代码如下:

import numpy as np
import sympy as sp

x = sp.Symbol('x')
xs = np.linspace(-2, 3, 5)
ys = sp.cos(2*x)*(sp.sin(2*x) + 1.5)+sp.cos(x)
# 先创建绘图对象,关闭自动显示避免重复渲染
graph = sp.plot(ys, xlim=[-2,3], show=False)

# 将符号函数转换为支持数值计算的函数
f_numeric = sp.lambdify(x, ys, modules='numpy')
# 计算指定x坐标对应的y值
y_markers = f_numeric(xs)

# 获取Matplotlib坐标轴实例
ax = graph._backend.ax[0]
# 绘制红色圆形标记,zorder设为较高值保证标记显示在曲线上方
ax.scatter(xs, y_markers, c='red', s=100, zorder=5)

# 显示最终图像
graph.show()

方案2:使用Sympy原生markers参数(代码更简洁)

如果不需要额外调整Matplotlib属性,也可以直接在创建plot对象时传入标记参数:

import numpy as np
import sympy as sp

x = sp.Symbol('x')
xs = np.linspace(-2, 3, 5)
ys = sp.cos(2*x)*(sp.sin(2*x) + 1.5)+sp.cos(x)

# 转换符号函数、计算标记点坐标
f_numeric = sp.lambdify(x, ys, modules='numpy')
y_markers = f_numeric(xs)

# 构造标记配置
marker_config = [{'args': [xs, y_markers, 'ro'], 'ms': 10, 'zorder': 5}]
# 绘图时传入标记配置
graph = sp.plot(ys, xlim=[-2,3], markers=marker_config)

两种方案都可以在你指定的xs坐标位置生成红色高亮标记,和你期望的目标效果一致。


内容的提问来源于stack exchange,提问作者Gytis Dokšas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:06:04