>>> 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.png , pdf )
考虑两个 Plot 物体, p1 和 p2 . 要将第二个绘图添加到第一个绘图,请使用 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.png , pdf )
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.png , pdf )
单一范围的多个绘图。
>>> 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.png , pdf )
具有不同范围的多个绘图。
>>> 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.png , pdf )
无自适应采样。
>>> 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.png , pdf )
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.png , pdf )
具有相同范围的多个表达式的参数化打印:
>>> 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.png , pdf )
带有多个表达式的参数化绘图,每个曲线的范围不同:
>>> 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.png , pdf )
绘图使用自适应算法,递归采样,以精确绘制曲线。自适应算法在两个点的中点附近使用一个随机点,该点必须进一步采样。因此,由于随机采样,重复相同的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.png , pdf )
如果要为特定系列指定线条颜色,则应为每个项目编制索引并手动应用该属性。
>>> p[0].line_color = 'red'
>>> p.show()
(png _, hires.png , pdf )
如果未指定范围,则使用默认范围(-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.png , pdf )
具有相同范围的多个绘图
>>> 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.png , pdf )
具有不同范围的多个绘图。
>>> 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.png , pdf )
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.png , pdf )
多个绘图。
>>> 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.png , pdf )
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.png , pdf )
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.png , pdf )
符号范围:
>>> p2 = plot_implicit(
... Eq(x**2 + y**2, 3), (x, -3, 3), (y, -3, 3))
(png _, hires.png , pdf )
以递归深度为参数:
>>> p3 = plot_implicit(
... Eq(x**2 + y**2, 5), (x, -4, 4), (y, -4, 4), depth = 2)
(png _, hires.png , pdf )
使用网格网格而不使用自适应网格:
>>> p4 = plot_implicit(
... Eq(x**2 + y**2, 5), (x, -5, 5), (y, -2, 2),
... adaptive=False)
(png _, hires.png , pdf )
使用网格网格而不使用指定点数的自适应网格:
>>> p5 = plot_implicit(
... Eq(x**2 + y**2, 5), (x, -5, 5), (y, -2, 2),
... adaptive=False, points=400)
(png _, hires.png , pdf )
绘图区域:
>>> p6 = plot_implicit(y > x**2)
(png _, hires.png , pdf )
使用布尔连接绘制:
>>> p7 = plot_implicit(And(y > x, y > -x))
(png _, hires.png , pdf )
当用单个变量(例如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.png , pdf )
在单行中水平绘制:
>>> 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.png , pdf )
以网格形式打印:
>>> 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.png , pdf )
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