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

Sympy添加坐标点标记异常:仅显示单个标记的解决求助

问题原因
  • 循环结束后sol变量仅保留最后一个值(6),所以标记只显示在x=6的位置
  • markers的args参数格式错误,Sympy要求标记点坐标为**(x值列表, y值列表)**,你当前的[sol, [0], a]格式不符合要求
解决方案

根据需求分两种场景给出修正代码:

场景1:标记x轴上x=1~6的位置(y=0)

import numpy as np
from sympy import symbols, plot, init_printing

x = symbols("x")
init_printing(use_unicode=True)
ekpr = x**2
# 生成x坐标列表
x_points = np.arange(1, 7, 1)
# 对应y坐标全为0
y_points = [0] * len(x_points)

plot(
    ekpr.rewrite(Add), xlim=[0, 8],
    markers=[{
        "args": [x_points, y_points],  # 传入x和y的列表
        "marker": "o",
        "color": "blue"  # 指定蓝色标记
    }]
)

场景2:标记曲线y=x²上x=1~6的对应点

如果要标记曲线上的点,只需把y值换成对应函数计算结果:

import numpy as np
from sympy import symbols, plot, init_printing

x = symbols("x")
init_printing(use_unicode=True)
ekpr = x**2
x_points = np.arange(1, 7, 1)
# 计算每个x对应的y值
y_points = [ekpr.subs(x, val) for val in x_points]

plot(
    ekpr.rewrite(Add), xlim=[0, 8],
    markers=[{
        "args": [x_points, y_points],
        "marker": "o",
        "color": "blue"
    }]
)
关键说明

直接传入x和y的列表给markers的args参数,Sympy会自动为每个坐标对绘制标记,不需要多余的循环打印步骤。

内容的提问来源于stack exchange,提问作者Fahrizal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:55:31