添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • plot_implicit:绘制2D隐式和region plot。

  • plot3d:在两个变量中绘制函数的三维绘图。

  • plot3d_parametric_line:打印由参数定义的三维直线图。

  • plot3d_参数化曲面:打印三维参数化曲面打印。

  • 以上功能仅为方便使用。通过传递相应的 Series 类到 Plot 作为争论。

    绘图类

    class sympy.plotting.plot. Plot ( * args , title = None , xlabel = None , ylabel = None , aspect_ratio = 'auto' , xlim = None , ylim = None , axis_center = 'auto' , axis = True , xscale = 'linear' , yscale = 'linear' , legend = False , autoscale = True , margin = 0 , annotations = None , markers = None , rectangles = None , fill = None , backend = 'default' , size = None , ** kwargs ) [源代码]

    绘图模块的中心类。

    对于交互式工作,函数 plot 更适合。

    这个类允许使用许多后端(matplotlib、textplot、用于sypy的旧pyglet模块、googlechartsapi等)绘制sympy表达式。

    图形可以包含任意数量的sympy表达式的绘图、点的坐标列表等。Plot有一个私有属性_series,它包含所有要绘制的数据系列(直线或曲面的表达式、点列表等(BaseSeries的所有子类))。这些数据不是由系列的实例导入的 from sympy import * .

    图形的定制分为两个级别。涉及图形整体的全局选项(例如标题、xlabel、scale等)以及每个数据系列选项(例如名称)和美学(例如颜色、点形状、线型等)。

    选项和美学的区别在于美学可以是坐标(或参数化绘图中的参数)的函数。美学支持的值包括:-无(后端使用默认值)-常量-一个变量的函数(第一个坐标或参数)-两个变量的函数(第一个和第二个坐标或参数)-三个变量的函数(仅在非参数三维图中),其实现取决于后端所以它们在某些后端可能不起作用。

    如果情节是参数化的,并且审美功能的数量允许它,那么美感是在参数上而不是在坐标上计算的。如果arity不允许对参数进行计算,则在坐标上进行计算。

    目前只支持笛卡尔坐标,但可以使用参数化绘图以极坐标、球坐标和柱坐标进行打印。

    构造函数绘图的参数必须是BaseSeries的子类。

    任何全局选项都可以指定为关键字参数。

    图形的全局选项包括:

  • 标题:str

  • xlabel:字符串

  • 伊拉贝尔:str

  • 传说:布尔

  • xscale:{'linear','log'}

  • yscale:{'linear','log'}

  • 轴:bool

  • axis_center:两个float的元组或{'center','auto'}

  • xlim:两个浮点数的元组

  • ylim:两个浮点数的元组

  • 纵横比:两个浮点的元组或{'auto'}

  • 自动缩放:布尔

  • 边距:浮动 [0, 1]

  • 后端:{'default'、'matplotlib'、'text'}或BaseBackend的子类

  • 大小:两个浮点的可选元组,(宽度,高度);默认值:无

  • 每个数据系列的选项和美感是:基本系列中没有。有关子类,请参见下面的选项。

    一些数据系列支持其他美学或选项:

    ListSeries、LineOver1DRangeSeries、Parametric2DLineSeries、Parametric3DLineSeries支持以下功能:

  • line_color:返回浮点值的函数。

  • 标签:str

  • 步骤:布尔

  • 仅限整数:bool

  • SurfaceOver2DRangeSeries,ParametricSurfaceSeries支持以下功能:

  • 返回一个float:u函数。

  • append ( arg ) [源代码]

    将绘图系列中的元素添加到现有绘图中。

    考虑两个 Plot 物体, p1 p2 . 要将第二个绘图的第一个系列对象添加到第一个,请使用 append 方法如下:

    >>> from sympy import symbols
    >>> from sympy.plotting import plot
    >>> x = symbols('x')
    >>> p1 = plot(x*x, show=False)
    >>> p2 = plot(x, show=False)
    >>> p1.append(p2[0])
    Plot object containing:
    [0]: cartesian line: x**2 for x over (-10.0, 10.0)
    [1]: cartesian line: x for x over (-10.0, 10.0)
    >>> p1.show()
    

    (png _, hires.pngpdf

    考虑两个 Plot 物体, p1p2 . 要将第二个绘图添加到第一个绘图,请使用 extend 方法如下:

    >>> from sympy import symbols
    >>> from sympy.plotting import plot
    >>> x = symbols('x')
    >>> p1 = plot(x**2, show=False)
    >>> p2 = plot(x, -x, show=False)
    >>> p1.extend(p2)
    Plot object containing:
    [0]: cartesian line: x**2 for x over (-10.0, 10.0)
    [1]: cartesian line: x for x over (-10.0, 10.0)
    [2]: cartesian line: -x for x over (-10.0, 10.0)
    >>> p1.show()
    

    (png _, hires.pngpdf

    show :bool,可选

    默认值设置为 True . 将显示设置为 False 函数不会显示绘图。的返回实例 Plot 类可以通过调用 save()show() 方法分别为。

    line_color :浮动,可选

    指定打印的颜色。看到了吗 Plot 查看如何为绘图设置颜色。

    如果有多个绘图,则对所有绘图应用相同的系列。如果要单独设置这些选项,可以索引 Plot 对象返回并设置它。

    标题 :str,可选

    地块的标题。如果绘图只有一个表达式,则将其设置为表达式的 Latex 表示形式。

    标签 :str,可选

    表达式中的标签。它将在调用时使用 legend . 默认值是表达式的名称。例如 sin(x)

    XLAP :str,可选

    x轴的标签。

    YLable :str,可选

    y轴的标签。

    X标度 :“linear”或“log”,可选

    设置x轴的缩放比例。

    大比例尺 :“linear”或“log”,可选

    设置y轴的缩放比例。

    axis_center :(浮动,浮动),可选

    两个浮点数的元组,表示中心或{'center','auto'}

    xlim :(浮动,浮动),可选

    表示x轴极限, (min, max) '.

    ylim :(浮动,浮动),可选

    表示y轴限制, (min, max) '.

    注解 :列表,可选

    指定所需批注类型的词典列表。字典中的键应该等效于matplotlib的annotate()函数的参数。

    标记 :列表,可选

    指定所需标记类型的词典列表。字典中的键应该与matplotlib的plot()函数的参数以及与标记相关的关键字参数等效。

    矩形 :列表,可选

    指定要打印的矩形尺寸的词典列表。字典中的键应该与matplotlib的参数等效补丁。矩形班级。

    fill :dict,可选

    指定绘图所需颜色填充类型的字典。字典中的键应该与matplotlib的fill_between()函数的参数等效。

    适应的 :bool,可选

    默认值设置为 True . 将自适应设置为 False 并指定 nb_of_points 如果需要均匀取样。

    绘图使用一种自适应算法,递归采样以精确绘图。自适应算法在两个点的中点附近使用一个随机点,该点必须进一步采样。因此,相同的情节可能会略有不同。

    深度 :int,可选

    自适应算法的递归深度。价值的深度 n 最多采样 \(2^{{n}}\) 点。

    如果 adaptive 标志设置为 False ,这将被忽略。

    nb_of_points :int,可选

    adaptive 设置为 False . 函数在 nb_of_points 点数。

    如果 adaptive 标志设置为 True ,这将被忽略。

    size :(浮动,浮动),可选

    以英寸为单位的形式(宽度、高度)的元组,用于指定整个图形的大小。默认值设置为 None ,这意味着大小将由默认后端设置。

    >>> from sympy import symbols
    >>> from sympy.plotting import plot
    >>> x = symbols('x')
    
    >>> plot(x**2, (x, -5, 5))
    Plot object containing:
    [0]: cartesian line: x**2 for x over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    单一范围的多个绘图。

    >>> plot(x, x**2, x**3, (x, -5, 5))
    Plot object containing:
    [0]: cartesian line: x for x over (-5.0, 5.0)
    [1]: cartesian line: x**2 for x over (-5.0, 5.0)
    
    
    
    
        
    
    [2]: cartesian line: x**3 for x over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    具有不同范围的多个绘图。

    >>> plot((x**2, (x, -6, 6)), (x, (x, -5, 5)))
    Plot object containing:
    [0]: cartesian line: x**2 for x over (-6.0, 6.0)
    [1]: cartesian line: x for x over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    无自适应采样。

    >>> plot(x**2, adaptive=False, nb_of_points=400)
    Plot object containing:
    [0]: cartesian line: x**2 for x over (-10.0, 10.0)
    

    (png _, hires.pngpdf

    sympy.plotting.plot.plot_parametric(*args, show=True, **kwargs)[源代码]

    打印二维参数曲线。

    常见规格为:

    绘制具有范围的单参数曲线

    plot_parametric((expr_x, expr_y), range)

    expr_x 表示参数函数的\(x\)组件的表达式。

    expr_y 表示参数函数的\(y\)组件的表达式。

    range 是一个三元组,表示参数符号start和stop。例如, (u, 0, 5) .

    如果未指定范围,则使用默认范围(-10,10)。

    但是,如果参数指定为 (expr_x, expr_y, range), ... ,必须手动指定每个表达式的范围。

    如果实现更高级的算法,默认范围将来可能会改变。

    适应的 :bool,可选

    指定是否使用自适应采样。

    默认值设置为 True . 将自适应设置为 False 并指定 nb_of_points 如果需要均匀取样。

    深度 :int,可选

    自适应算法的递归深度。值为\(n\)的深度最多可采样\(2^n\)个点。

    nb_of_points :int,可选

    adaptive 标志设置为 False .

    指定用于均匀采样的点数。

    line_color :函数

    返回浮点值的函数。

    指定打印的颜色。

    Plot 了解更多详细信息。

    标签 :str,可选

    表达式中的标签。它将在调用时使用 legend . 默认值是表达式的名称。例如 sin(x)

    XLAP :str,可选

    x轴的标签。

    YLable :str,可选

    y轴的标签。

    X标度 :“linear”或“log”,可选

    设置x轴的缩放比例。

    大比例尺 :“linear”或“log”,可选

    设置y轴的缩放比例。

    axis_center :(浮动,浮动),可选

    两个浮点数的元组,表示中心或{'center','auto'}

    xlim :(浮动,浮动),可选

    表示x轴极限, (min, max) '.

    ylim :(浮动,浮动),可选

    表示y轴限制, (min, max) '.

    size :(浮动,浮动),可选

    以英寸为单位的形式(宽度、高度)的元组,用于指定整个图形的大小。默认值设置为 None ,这意味着大小将由默认后端设置。

    >>> from sympy import symbols, cos, sin
    >>> from sympy.plotting import plot_parametric
    >>> u = symbols('u')
    

    带有单个表达式的参数化绘图:

    >>> plot_parametric((cos(u), sin(u)), (u, -5, 5))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    具有相同范围的多个表达式的参数化打印:

    >>> plot_parametric((cos(u), sin(u)), (u, cos(u)), (u, -10, 10))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-10.0, 10.0)
    [1]: parametric cartesian line: (u, cos(u)) for u over (-10.0, 10.0)
    

    (png _, hires.pngpdf

    带有多个表达式的参数化绘图,每个曲线的范围不同:

    >>> plot_parametric((cos(u), sin(u), (u, -5, 5)),
    ...     (cos(u), u, (u, -5, 5)))
    Plot object containing:
    [0]: parametric cartesian line: (cos(u), sin(u)) for u over (-5.0, 5.0)
    [1]: parametric cartesian line: (cos(u), u) for u over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    绘图使用自适应算法,递归采样,以精确绘制曲线。自适应算法在两个点的中点附近使用一个随机点,该点必须进一步采样。因此,由于随机采样,重复相同的plot命令可能会得到稍微不同的结果。

    如果有多个绘图,则相同的可选参数将应用于在同一画布中绘制的所有绘图。如果要单独设置这些选项,可以为返回的 Plot 对象并设置它。

    例如,当您指定 line_color 一旦,它将同时适用于两个系列。

    >>> from sympy import pi
    >>> expr1 = (u, cos(2*pi*u)/2 + 1/2)
    >>> expr2 = (u, sin(2*pi*u)/2 + 1/2)
    >>> p = plot_parametric(expr1, expr2, (u, 0, 1), line_color='blue')
    

    (png _, hires.pngpdf

    如果要为特定系列指定线条颜色,则应为每个项目编制索引并手动应用该属性。

    >>> p[0].line_color = 'red'
    >>> p.show()
    

    (png _, hires.pngpdf

    如果未指定范围,则使用默认范围(-10,10)。

    具有不同范围的多个绘图。

    plot3d((expr1, range_x, range_y), (expr2, range_x, range_y), ..., **kwargs)

    必须为每个表达式指定范围。

    如果实施更先进的默认范围检测算法,默认范围将来可能会发生变化。

    expr :表示沿x的函数的表达式。

    range_x :(x,0,5),表示x变量范围的三元组。

    range_y :(y,0,5),表示y的范围的三元组

    variable.

    关键字参数

    的参数 SurfaceOver2DRangeSeries 班级:

    nb_of_points_x :int。x范围在 nb_of_points_x 点数。

    nb_of_points_y :int。y范围在 nb_of_points_y 点数。

    surface_color :返回浮点值的函数。指定打印表面的颜色。看到了吗 sympy.plotting.Plot 了解更多详细信息。

    如果有多个绘图,则对所有绘图应用相同的系列参数。如果要单独设置这些选项,可以为返回的 Plot 对象并设置它。

    的参数 Plot 班级:

    title :str.绘图标题。 size :(float,float),可选的一个以英寸为单位的形式(宽度、高度)的元组,用于指定整体图形的大小。默认值设置为 None ,这意味着大小将由默认后端设置。

    >>> from sympy import symbols
    >>> from sympy.plotting import plot3d
    >>> x, y = symbols('x y')
    
    >>> plot3d(x*y, (x, -5, 5), (y, -5, 5))
    Plot object containing:
    [0]: cartesian surface: x*y for x over (-5.0, 5.0) and y over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    具有相同范围的多个绘图

    >>> plot3d(x*y, -x*y, (x, -5, 5), (y, -5, 5))
    Plot object containing:
    [0]: cartesian surface: x*y for x over (-5.0, 5.0) and y over (-5.0, 5.0)
    
    
    
    
        
    
    [1]: cartesian surface: -x*y for x over (-5.0, 5.0) and y over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    具有不同范围的多个绘图。

    >>> plot3d((x**2 + y**2, (x, -5, 5), (y, -5, 5)),
    ...     (x*y, (x, -3, 3), (y, -3, 3)))
    Plot object containing:
    [0]: cartesian surface: x**2 + y**2 for x over (-5.0, 5.0) and y over (-5.0, 5.0)
    [1]: cartesian surface: x*y for x over (-3.0, 3.0) and y over (-3.0, 3.0)
    

    (png _, hires.pngpdf

    sympy.plotting.plot.plot3d_parametric_line(*args, show=True, **kwargs)[源代码]

    打印三维参数化直线打印。

    单一地块:

    plot3d_parametric_line(expr_x, expr_y, expr_z, range, **kwargs)

    如果未指定范围,则使用默认范围(-10,10)。

    多个绘图。

    plot3d_parametric_line((expr_x, expr_y, expr_z, range), ..., **kwargs)

    必须为每个表达式指定范围。

    如果实施更先进的默认范围检测算法,默认范围将来可能会发生变化。

    expr_x :表示沿x的函数的表达式。

    expr_y :表示沿y轴的函数的表达式。

    expr_z :表示沿z轴的函数的表达式。

    range(u, 0, 5) ,表示参数变量范围的三元组。

    关键字参数

    的参数 Parametric3DLineSeries 班级。

    nb_of_points :范围均匀采样于 nb_of_points 点数。

    line_color :返回浮点值的函数。指定打印的颜色。看到了吗 sympy.plotting.Plot 了解更多详细信息。

    label :结构

    绘图的标签。它将在调用时使用 legend=True 在绘图中用给定的标签来表示函数。

    如果有多个绘图,则对所有绘图应用相同的系列参数。如果要单独设置这些选项,可以为返回的 Plot 对象并设置它。

    的参数 Plot 班级。

    title :str.绘图标题。

    size(浮动,浮动)可选

    以英寸为单位的形式(宽度、高度)的元组,用于指定整个图形的大小。默认值设置为 None ,这意味着大小将由默认后端设置。

    >>> from sympy import symbols, cos, sin
    >>> from sympy.plotting import plot3d_parametric_line
    >>> u = symbols('u')
    

    单一地块。

    >>> plot3d_parametric_line(cos(u), sin(u), u, (u, -5, 5))
    Plot object containing:
    [0]: 3D parametric cartesian line: (cos(u), sin(u), u) for u over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    多个绘图。

    >>> plot3d_parametric_line((cos(u), sin(u), u, (u, -5, 5)),
    ...     (sin(u), u**2, u, (u, -5, 5)))
    Plot object containing:
    [0]: 3D parametric cartesian line: (cos(u), sin(u), u) for u over (-5.0, 5.0)
    [1]: 3D parametric cartesian line: (sin(u), u**2, u) for u over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    sympy.plotting.plot.plot3d_parametric_surface(*args, show=True, **kwargs)[源代码]

    打印三维参数化曲面打印。

    单一地块。

    plot3d_parametric_surface(expr_x, expr_y, expr_z, range_u, range_v, **kwargs)

    如果未指定范围,则使用默认范围(-10,10)。

    多个绘图。

    plot3d_parametric_surface((expr_x, expr_y, expr_z, range_u, range_v), ..., **kwargs)

    必须为每个表达式指定范围。

    如果实施更先进的默认范围检测算法,默认范围将来可能会发生变化。

    expr_x :表示函数的表达式 x .

    expr_y :表示函数的表达式 y .

    expr_z :表示函数的表达式 z .

    range_u: (u, 0, 5), A 3-tuple denoting the range of the u variable.

    range_v(v, 0, 5) ,表示v变量范围的三元组。

    关键字参数

    的参数 ParametricSurfaceSeries 班级:

    nb_of_points_u :内景 u 范围均匀采样于 nb_of_points_v 点数

    nb_of_points_y :内景 v 范围均匀采样于 nb_of_points_y 点数

    surface_color :返回浮点值的函数。指定打印表面的颜色。看到了吗 sympy.plotting.Plot 了解更多详细信息。

    如果有多个绘图,则对所有绘图应用相同的系列参数。如果要单独设置这些选项,可以为返回的 Plot 对象并设置它。

    的参数 Plot 班级:

    title :str.绘图标题。 size :(float,float),可选的一个以英寸为单位的形式(宽度、高度)的元组,用于指定整体图形的大小。默认值设置为 None ,这意味着大小将由默认后端设置。

    >>> from sympy import symbols, cos, sin
    >>> from sympy.plotting import plot3d_parametric_surface
    >>> u, v = symbols('u v')
    

    单一地块。

    >>> plot3d_parametric_surface(cos(u + v), sin(u - v), u - v,
    ...     (u, -5, 5), (v, -5, 5))
    Plot object containing:
    [0]: parametric cartesian surface: (cos(u + v), sin(u - v), u - v) for u over (-5.0, 5.0) and v over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    sympy.plotting.plot_implicit.plot_implicit(expr, x_var=None, y_var=None, adaptive=True, depth=0, points=300, line_color='blue', show=True, **kwargs)[源代码]

    绘制隐式方程/不等式的绘图函数。

  • expr :要绘制的方程/不等式。

  • x_var (optional) : symbol to plot on x-axis or tuple giving symbol and range as (symbol, xmin, xmax)

  • y_var (optional) : symbol to plot on y-axis or tuple giving symbol and range as (symbol, ymin, ymax)

  • 如果既不 x_var 也不 y_var 则表达式中的自由符号将按排序顺序分配。

    还可以使用以下关键字参数:

    adaptive 布尔值。默认值设置为True。一定是的

    如果要使用网格栅格,请设置为False。

    默认情况下,plot_implicit使用区间算术来绘制函数。如果无法使用区间算术绘制表达式,则默认为使用固定点数的网格网格生成轮廓。通过将“自适应”设置为False,可以强制plot峎隐式使用网格网格。网格网格法在采用区间算法进行自适应绘图时是有效的,不能以较小的线宽绘制。

    绘图表达式:

    >>> from sympy import plot_implicit, symbols, Eq, And
    >>> x, y = symbols('x y')
    

    表达式中的符号没有任何范围:

    >>> 
    
    
    
    
        
    p1 = plot_implicit(Eq(x**2 + y**2, 5))
    

    (png _, hires.pngpdf

    符号范围:

    >>> p2 = plot_implicit(
    ...     Eq(x**2 + y**2, 3), (x, -3, 3), (y, -3, 3))
    

    (png _, hires.pngpdf

    以递归深度为参数:

    >>> p3 = plot_implicit(
    ...     Eq(x**2 + y**2, 5), (x, -4, 4), (y, -4, 4), depth = 2)
    

    (png _, hires.pngpdf

    使用网格网格而不使用自适应网格:

    >>> p4 = plot_implicit(
    ...     Eq(x**2 + y**2, 5), (x, -5, 5), (y, -2, 2),
    ...     adaptive=False)
    

    (png _, hires.pngpdf

    使用网格网格而不使用指定点数的自适应网格:

    >>> p5 = plot_implicit(
    ...     Eq(x**2 + y**2, 5), (x, -5, 5), (y, -2, 2),
    ...     adaptive=False, points=400)
    

    (png _, hires.pngpdf

    绘图区域:

    >>> p6 = plot_implicit(y > x**2)
    

    (png _, hires.pngpdf

    使用布尔连接绘制:

    >>> p7 = plot_implicit(And(y > x, y > -x))
    

    (png _, hires.pngpdf

    当用单个变量(例如y-1)绘制表达式时,请显式指定x或y变量:

    >>> p8 = plot_implicit(y - 1, y_var=y)
    >>> p9 = plot_implicit(x - 1, x_var=x)
    class sympy.plotting.plot.PlotGrid(nrows, ncolumns, *args, show=True, size=None, **kwargs)[源代码]
    

    这个类帮助在一个图形中从已经创建的sympy绘图中绘制子图。

    >>> from sympy import symbols
    >>> from sympy.plotting import plot, plot3d, PlotGrid
    >>> x, y = symbols('x, y')
    >>> p1 = plot(x, x**2, x**3, (x, -5, 5))
    >>> p2 = plot((x**2, (x, -6, 6)), (x, (x, -5, 5)))
    >>> p3 = plot(x**3, (x, -5, 5))
    >>> p4 = plot3d(x*y, (x, -5, 5), (y, -5, 5))
    
    >>> PlotGrid(2, 1 , p1, p2)
    PlotGrid object containing:
    Plot[0]:Plot object containing:
    [0]: cartesian line: x for x over (-5.0, 5.0)
    [1]: cartesian line: x**2 for x over (-5.0, 5.0)
    [2]: cartesian line: x**3 for x over (-5.0, 5.0)
    Plot[1]:Plot object containing:
    [0]: cartesian line: x**2 for x over (-6.0, 6.0)
    [1]: cartesian line: x for x over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    在单行中水平绘制:

    >>> PlotGrid(1, 3 , p2, p3, p4)
    PlotGrid object containing:
    Plot[0]:Plot object containing:
    [0]: cartesian line: x**2 for x over (-6.0, 6.0)
    [1]: cartesian line: x for x over (-5.0, 5.0)
    Plot[1]:Plot object containing:
    [0]: cartesian line: x**3 for x over (-5.0, 5.0)
    Plot[2]:Plot object containing:
    [0]: cartesian surface: x*y for x over (-5.0, 5.0) and y over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    以网格形式打印:

    >>> PlotGrid(2, 2, p1, p2 ,p3, p4)
    PlotGrid object containing:
    Plot[0]:Plot object containing:
    [0]: cartesian line: x for x over (-5.0, 5.0)
    [1]: cartesian line: x**2 for x over (-5.0, 5.0)
    [2]: cartesian line: x**3 for x over (-5.0, 5.0)
    Plot[1]:Plot object containing:
    [0]: cartesian line: x**2 for x over (-6.0, 6.0)
    [1]: cartesian line: x for x over (-5.0, 5.0)
    Plot[2]:Plot object containing:
    [0]: cartesian line: x**3 for x over (-5.0, 5.0)
    Plot[3]:Plot object containing:
    [0]: cartesian surface: x*y for x over (-5.0, 5.0) and y over (-5.0, 5.0)
    

    (png _, hires.pngpdf

    class sympy.plotting.plot.LineOver1DRangeSeries(expr, var_start_end, **kwargs)[源代码]

    在一定范围内由一个辛表达式组成的线的表示。

    get_segments()[源代码]

    自适应地获取用于打印的线段。

    自适应采样是通过递归检查三个点是否几乎共线来完成的。如果它们不共线,则在这些点之间添加更多点。

    参数曲线的自适应多边形逼近,Luiz Henrique de Figueiredo。

    class sympy.plotting.plot.Parametric2DLineSeries(expr_x, expr_y, var_start_end, **kwargs)[源代码]

    在一个范围内由两个参数辛表达式组成的线的表示。

    get_segments()[源代码]

    自适应地获取用于打印的线段。

    自适应采样是通过递归检查三个点是否几乎共线来完成的。如果它们不共线,则在这些点之间添加更多点。

    参数曲线的自适应多边形逼近,Luiz Henrique de Figueiredo。

    class sympy.plotting.plot.Parametric3DLineSeries(expr_x, expr_y, expr_z, var_start_end, **kwargs)[源代码]

    由两个参数辛表达式和一个范围组成的三维线的表示。

    class sympy.plotting.plot.SurfaceOver2DRangeSeries(expr, var_start_end_x, var_start_end_y, **kwargs)[源代码]

    由一个sympy表达式和2D范围组成的三维曲面的表示。

    class sympy.plotting.plot.ParametricSurfaceSeries(expr_x, expr_y, expr_z, var_start_end_u, var_start_end_v, **kwargs)[源代码]

    由三个参数辛表达式和一个范围组成的三维曲面的表示。

    class sympy.plotting.plot_implicit.ImplicitSeries(expr, var_start_end_x, var_start_end_y, has_equality, use_interval_math, depth, nb_of_points, line_color)[源代码]

    隐式图的表示

    class sympy.plotting.plot.BaseBackend(parent)[源代码]

    所有后端的基类。后端表示打印库,它实现了使用SymPy打印函数所需的功能。

    绘图模块的工作原理:

    无论何时调用绘图函数,提供的表达式都是

    已处理,以及 \(BaseSeries\) 类,其中包含绘制表达式所需的信息(例如表达式、范围、序列名…)。最终,这些对象将生成要绘制的数值数据。

    后端应该检查它是否支持给定的数据系列(例如TextBackend只支持LineOver1DRange)。

    后端的责任是知道如何使用给定的数据系列类。注意,当前的实现 \(*Series\) “matlib”返回的是“numeric data” \(get_points\)\(get_meshes\) 方法将直接由Matplotlib使用。因此,新的后端必须预处理数值数据,使其与所选的绘图库兼容。请记住,未来的SymPy版本可能会改进 \(*Series\) 类以返回数值数据“非matplotlib-centric”,因此,如果您编写了一个新的后端,您有责任检查它是否在每个SymPy发行版上工作。

    请探索 \(MatplotlibBackend\) 源代码来理解后端应该如何编码。

    MatplotlibBackend

    class sympy.plotting.plot.MatplotlibBackend(parent)[源代码]

    此类实现了将Matplotlib与SymPy打印函数一起使用的功能。

    process_series()[源代码]

    迭代每个 Plot 对象并进一步调用u processu series()

    Pyglet绘图

    这是使用pyglet的旧打印模块的文档。此模块有一些局限性,不再积极开发。另一种方法是查看新的绘图模块。

    pyglet绘图模块可以很好地进行二维和三维绘图,可以通过控制台命令以及键盘和鼠标进行控制,唯一的依赖项是 pyglet .

    以下是最简单的用法:

    >>> from sympy import var
    >>> from sympy.plotting.pygletplot import PygletPlot as Plot
    >>> var('x y z')
    >>> Plot(x*y**3-y*x**3)
    

    要查看许多打印示例,请参见 examples/pyglet_plotting.py 并尝试在交互模式下运行它(python-i绘图.py):

    $ python -i examples/pyglet_plotting.py
    

    和类型,例如 example(7)example(11) .

    也见 Plotting Module 截图的wiki页面。

    绘图窗口控件

    坐标模式

    Plot 支持多种曲线坐标模式,它们对每个绘图函数都是独立的。可以使用名为“mode”的参数显式指定坐标模式,但可以为笛卡尔或参数化绘图自动确定坐标模式,因此只能为极轴模式、柱面模式和球形模式指定坐标模式。

    明确地, Plot(function arguments)Plot.__setitem__(i, function arguments) (使用数组索引语法访问 Plot 如果提供一个函数,则将参数解释为笛卡尔图;如果提供两个或三个函数,则将参数解释为参数图。类似地,参数将被解释为使用一个变量的曲线,如果使用两个变量,则解释为曲面。

    支持的变量数模式:

  • 1(曲线):参数化、笛卡尔、极坐标

  • 2(曲面):参数化、笛卡尔、圆柱形、球形

  • >>> Plot(1, 'mode=spherical; color=zfade4')
    

    请注意,函数参数是以“key1=value1;key2=value2”形式给出的选项字符串(空格被截断)。直接给plot的关键字参数应用于plot本身。

    指定变量的间隔

    可变间隔的基本格式是 [变量、最小值、最大值、步数] . 但是,语法非常灵活,未指定的参数取自当前坐标模式的默认值:

    >>> Plot(x**2) # implies [x,-5,5,100]
    >>> Plot(x**2, [], []) # [x,-1,1,40], [y,-1,1,40]
    >>> Plot(x**2-y**2, [100], [100]) # [x,-1,1,100], [y,-1,1,100]
    >>> Plot(x**2, [x,-13,13,100])
    >>> Plot(x**2, [-13,13]) # [x,-13,13,100]
    >>> Plot(x**2, [x,-13,13]) # [x,-13,13,100]
    >>> Plot(1*x, [], [x], 'mode=cylindrical') # [unbound_theta,0,2*Pi,40], [x,-1,1,20]
    >>> p[2] = -x**2-y**2
    >>> p[2].style = 'wireframe'
    >>> p[1].color = z, (0.4,0.4,0.9), (0.9,0.4,0.4)
    >>> p[1].style = 'both'
    >>> p[2].style = 'both'
    >>> p.close()
    

    以下代码将绘制鞍座并根据其渐变的大小对其进行着色:

    >>> fz = x**2-y**2
    >>> Fx, Fy, Fz = fz.diff(x), fz.diff(y), 0
    >>> p[1] = fz, 'style=solid'
    >>> p[1].color = (Fx**2 + Fy**2 + Fz**2)**(0.5)
    

    着色算法的工作原理如下:

  • 计算曲线或曲面上的颜色函数。

  • 求出每个分量的最小值和最大值。

  • 将每个组件缩放到颜色渐变。

  • 如果未明确指定,默认颜色渐变为f(0.0)=(0.4,0.4,0.4)->f(1.0)=(0.9,0.9,0.9)。在我们的例子中,一切都是灰度级的,因为我们为每个颜色分量均匀地应用了默认的颜色渐变。在定义颜色方案时,最好使用渐变色:

    >>> p[1].color = (Fx**2 + Fy**2 + Fz**2)**(0.5), (0.1,0.1,0.9), (0.9,0.1,0.1)
    

    这里有四个步骤的颜色渐变:

    >>> gradient = [ 0.0, (0.1,0.1,0.9), 0.3, (0.1,0.9,0.1),
    ...              0.7, (0.9,0.9,0.1), 1.0, (1.0,0.0,0.0) ]
    >>> p[1].color = (Fx**2 + Fy**2 + Fz**2)**(0.5), gradient
    

    指定颜色方案的另一种方法是为每个组件r、g、b提供单独的函数。使用此语法,默认颜色方案定义如下:

    >>> p[1].color = z,y,x, (0.4,0.4,0.4), (0.9,0.9,0.9)
    

    这将映射z->红色、y->绿色和x->蓝色。在某些情况下,您可能更喜欢使用以下替代语法:

    >>> p[1].color = z,(0.4,0.9), y,(0.4,0.9), x,(0.4,0.9)
    

    您仍然可以将多步渐变与三个函数配色方案一起使用。

    绘制几何实体

    绘图模块能够绘制直线、圆、椭圆等二维几何实体。下面的示例在椭圆上的任意点绘制圆和切线。:

    In [1]: p = Plot(axes='label_axes=True')
    In [2]: c = Circle(Point(0,0), 1)
    In [3]: t = c.tangent_lines(c.random_point())
    In [4]: p[0] = c
    In [5]: p[1] = t
    

    不支持直接绘制多边形(多边形、常规多边形、三角形)。但是,多边形可以通过循环绘制,如下所示。:

    In [6]: p = Plot(axes='label_axes=True')
    In [7]: t = RegularPolygon(Point(0,0), 1, 5)
    In [8]: for i in range(len(t.sides)):
       ....:    p[i] = t.sides[i]
    sympy.plotting.textplot.textplot(expr, a, b, W=55, H=21)[源代码]
    

    打印一张完整的ASCII艺术图,其中包含一个符号,例如x或其他符号 [a, b] .

    >>> from sympy import Symbol, sin
    >>> from sympy.plotting import textplot
    >>> t = Symbol('t')
    >>> textplot(sin(t)*t, 0, 15)
     14 |                                                  ...
        |                                                     .
        |                                                 .
        |                                                      .
        |                                                .
        |                            ...
        |                           /   .               .
        |                          /
        |                         /      .
        |                        .        .            .
    1.5 |----.......--------------------------------------------
        |....       \           .          .
        |            \         /                      .
        |             ..      /             .
        |               \    /                       .
        |                ....
        |                                    .
        |                                     .     .
        |                                      .   .
    -11 |_______________________________________________________
         0                          7.5                        15