gpt4 book ai didi

python - 我怎样才能画更多的线?(python sympy)

转载 作者:行者123 更新时间:2023-12-05 06:38:49 24 4
gpt4 key购买 nike

当我打字时,

from sympy import *
from sympy.plotting import *
from sympy.plotting.plot import *


x, y = symbols('x y')
f = Function('f')
g = Function('g')

f = 1/((x+0.3)**2 + y**2) - 1/((x-0.3)**2 + y**2 )
g = (x+0.3)/sqrt((x+0.3)**2 + y**2) - (x-0.3)/sqrt((x-0.3)**2 + y**2)


p0 = Plot(ContourSeries(f,(x,-1.5,1.5),(y,-1.5,1.5)))
p1 = Plot(ContourSeries(g,(x,-1.5,1.5),(y,-1.5,1.5)))

p0.show()
p1.show()

enter image description here

enter image description here

p0 显示为第一张图片。行数很少。

我想像第二张图一样画更多的线。

解决方案是什么?

最佳答案

ContourSeries 类没有公开执行此操作的正确信息,但它很容易扩展。我调用参数levels,直接传递给matplotlib。

class MyContourSeries(ContourSeries):

def __init__(self, expr, var_start_end_x, var_start_end_y, **kwargs):
super(MyContourSeries, self).__init__(expr, var_start_end_x, var_start_end_y)
self.nb_of_points_x = kwargs.get('nb_of_points_x', 50)
self.nb_of_points_y = kwargs.get('nb_of_points_y', 50)
self.levels = kwargs.get('levels', 5)

def get_meshes(self):
mesh_x, mesh_y, f = super().get_meshes()
return (mesh_x, mesh_y, f, self.levels)

这至少适用于 sympy 1.2 和 1.3。 Sympy 绘图正在为这个系列使用 matplotlibs countour (https://github.com/sympy/sympy/blob/master/sympy/plotting/plot.py#L909)

    elif s.is_contour:
self.ax.contour(*s.get_meshes())

哪个签名是 matplotlib.pyplot.contour([X, Y,] Z, [levels], **kwargs)

与 matplotlib 轮廓函数一样,您可以使用固定数量的级别

p0 = Plot(MyContourSeries(f, (x, -1.5, 1.5), (y, -1.5, 1.5),
nb_of_points_x=50, nb_of_points_y=50, levels=100))
p0.show()

number of levels

或直接通过关卡

p0 = Plot(MyContourSeries(f, (x, -1.5, 1.5), (y, -1.5, 1.5),
nb_of_points_x=50, nb_of_points_y=50, levels=np.arange(-50,50)))
p0.show()

passing a range

关于python - 我怎样才能画更多的线?(python sympy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45538962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com