我想用Sympy绘制曲线上的点。我知道有一个使用特定参数markers (例如markers=[{'args': [-1, 2.5, 'ro']}] )的解决方案,但从文档上看,似乎有可能直接绘制点:
该图形可以包含任意数量的SymPy表达式图、点坐标列表等。
我无法确定如何将点坐标提供给函数,但从示例看,似乎使用了两个单独的列表,一个用于x坐标,一个用于y坐标。然而,这是行不通的:
from sympy import plot
x = [-1]
y = [2.5]
point_plots = plot(x, y)图系列中的文件~\miniconda3\envs\gis\lib\site-packages\sympy\plotting\plot.py:1850 = LineOver1DRangeSeries(* arg,**kwargs)用于plot_expr TypeError中的arg:'NoneType‘对象不可迭代
那么它是如何工作的呢?很抱歉问了这么一个基本问题..。
发布于 2022-09-01 14:51:29
可悲的是,这种功能被记录得很糟糕,我们必须看一下源代码才能理解如何使用它。
markers接受一个字典列表。每个字典都必须有args关键字,它是一个list/tuple,包含x坐标和y坐标。然后,您可以提供matplotlib的plt.plot命令将使用的其他关键字参数来自定义输出。
遗憾的是,如果您只传递markers关键字参数,绘图模块将创建一个3D绘图:所以,您必须绘制一个符号表达式来告诉它“使用2D绘图”。
p = plot(0, # plot a symbolic expression to force to use 2D plot
markers=[
{"args": [[1, 2, 3, 4], [5, 4, 3, 2]]},
{"args": [[4, 3], [1, 5]], "color": "r", "marker": "s", "linestyle": "None"},
],
xlim=(0, 5)
)PS:您可能想看看这个改进的绘图模块:https://github.com/Davide-sd/sympy-plot-backends。它公开了接受坐标列表而不是符号表达式的plot_list函数。
https://stackoverflow.com/questions/73570292
复制相似问题