图形绘制#

(有关LaTeX图形的图纸,请参见 图表_日期 模块。)

所有图形都有关联的Sage图形对象,您可以显示:

圣人: = .WheelGraph(车轮图表)(15)
圣人:P(P) = .情节()
圣人:P(P).显示()  #长时间
../../_图像/graph_plot-1.svg

绘制使用Sage’s创建的图形时图表命令,节点位置使用spring-layout算法确定。特殊图表可从图表*具有预设位置。例如,比较Petersen图的两个图,使用获得的图表或从该数据库获得:

圣人:彼得森·斯普林 = 图表(':我`ES@obGkqegW~')
圣人:彼得森·斯普林.显示()  #长时间
../../_images/graph_plot-2.svg
圣人:彼得森数据库 = .彼得森图形()
圣人:彼得森数据库.显示()  #长时间
../../_图像/graph_plot-3.svg

此数据库中的所有构造函数(除了一些随机图)都会预先填充位置字典,绕过spring-layout定位算法。

绘图选项

以下是接受的选项列表绘图()以及图形绘图。这两个函数还接受以下所有选项sage.plot图形。Graphics.show().

布局

布局算法–其中之一:“非循环”、“圆形”(绘制顶点均匀分布在圆上的图形)、“排名”、“graphviz”、“平面”、“弹簧”(传统弹簧布局,使用图形的当前位置作为初始位置)或“树”(根据根的最小距离,树将按级别绘制)。

迭代

执行弹簧布局算法的次数。

高度

将高度映射到此高度的顶点列表的字典。

春天

使用弹簧布局完成当前布局。

树_根

绘制树的顶点指定。树的一个顶点,用作layout=“树”选项。如果未指定根,则选择靠近树中心的根。忽略,除非layout=“树”.

forest_roots(R)

一个可迭代的,指定要用作根的顶点layout=“森林”选项。如果没有为树指定根,则选择一个靠近树中心的根。忽略,除非layout=“森林”.

树_方向

树枝的方向–“向上”、“向下”、“向左”或“向右”。

保存操作系统

是否保存图形的计算位置。

昏暗的

布局的尺寸–2或3。

掠夺

使用哪个graphviz布局程序–“circo”、“dot”、“fdp”、“neato”或“twopi”之一。

按组件(_C)

是否按连接的组件进行弹簧布局–布尔值。

销售时点情报系统

顶点的位置字典。

顶点标签

要绘制的顶点标签。这可能是真的/False(错误)为了指示是否打印not的顶点字符串表示,需要一个由顶点键入并与每个顶点关联标签字符串的字典,或者一个将顶点作为输入并返回标签字符串的函数。

顶点_颜色

vertex_colors字典中未列出的顶点的默认颜色。

顶点_颜色

指定顶点颜色的字典:每个键都是matplotlib可以识别的颜色,每个对应的值都是顶点列表。

顶点_大小

绘制顶点的大小。

顶点_形状

用于绘制顶点的形状。目前无法用于多边缘DiGraphs。

边缘_标签

是否绘制边缘标签。

边缘_样式

边缘的线型。它应该分别是“实线”、“虚线”、”虚线“、”划线“或”-“、”-“,”:“、”-.“之一。

边缘厚度

边的厚度。

边缘_颜色

edge_colors中未列出的边的默认颜色。

边缘_颜色

指定边颜色的字典:每个键都是matplotlib识别的颜色,每个对应的值都是边的列表。

颜色_标签

是否根据标签给边缘上色。这还接受将标签映射到颜色的函数或字典。

隔板

顶点集的分区。如果指定,绘图将以不同的颜色显示每个单元格;vertex_colors优先。

循环大小(_S)

最小循环的半径。

距离

多重边之间的距离。

最大列表(_D)

允许多重边的最大距离范围。

谈话

是否在对话模式下显示顶点(较大和白色)。

graph_border(图形顺序)

是否围绕图形绘制边框。

边缘_标签_背景

边缘标签的背景颜色。

默认选项

此模块定义了两个字典,其中包含绘图()显示()方法。这两个字典是sage.graphs.graph_plot。默认批次选项sage.graphs.graph_plot。默认_显示_选项分别是。

显然,当显式给出参数时,这些值被推翻。

下面是如何将图形的默认大小定义为(6, 6).前两次呼叫显示()使用此选项,而第三个选项不使用(使无花果化明确给出):

圣人:进口 sage.graphs.graph_绘图
圣人:圣人..图形_地块.默认_显示_选项[“无花果化”] = (6, 6)
圣人:.彼得森图表().显示()  #长时间
圣人:.变化图().显示()  #长时间
圣人:.彼得森图表().显示(使无花果化=(4, 4))  #长时间

现在,我们可以将默认值重置为其初始值,并将图形显示为之前:

圣人:圣人..图形_绘图.默认_显示_选项['人物尺寸'] = (4, 4)
圣人:.彼得森图表().显示()  #长时间
圣人:.变化图().显示()  #长时间

注释

  • While期间默认_PLOT_OPTIONS影响两者G.演出()G.绘图(),设置来自默认_显示_选项仅影响G.演出().

  • 为了永久定义默认值,您可以添加两个行到Sage的启动脚本。示例:

    圣人:进口 sage.graphs.graph_绘图
    圣人:圣人..图形_绘图.默认_显示_选项[“无花果化”] = (4, 4)
    

方法和功能索引

GraphPlot.set_pos()

设置此GraphPlot的位置打印参数。

GraphPlot.set_vertices()

设置此GraphPlot的顶点打印参数。

图形Plot.set_edges()

设置GraphPlot对象的边(或箭头)打印参数。

GraphPlot.show()

显示与此GraphPlot对象关联的(Di)Graph。

GraphPlot.plot()

返回表示(di)图形的图形对象。

图形Plot.layout_tree()

计算一棵树的漂亮布局。

sage.graphs.graph_plot。图形绘图(图表,选项)#

基础:Sage对象

返回a图形绘图对象,它存储所有需要的参数用于绘制(Di)图。

A类图形绘图具有绘图和显示功能,以及一些功能设置顶点和边的参数。此构造函数假定将设置默认选项。默认值如下例所示。

示例:

圣人: sage.graphs.graph_绘图 进口 图形绘图
圣人:选项 = {
....:    '顶点_大小': 200,
....:    '顶点标签': 真的,
....:    '布局': ,
....:    '边缘样式': “实心”,
....:    '边缘_颜色': “黑色”,
....:    '边缘_颜色': ,
....:    '边缘标签': False(错误),
....:    '迭代': 50,
....:    '树方向': “向下”,
....:    “高度”: ,
....:    '图表顺序': False(错误),
....:    “谈话”: False(错误),
....:    '颜色_标签': False(错误),
....:    '分区': ,
....:    “距离”: .075,
....:    '最大列表': 1.5,
....:    '循环大小': .075,
....:    '边缘标签背景': “透明”}
圣人: = 图表({0: [1, 2], 2: [], 4: [0, 1]})
圣人:普通合伙人 = 图形绘图(, 选项)
布局树(,方向)#

计算一棵树的漂亮布局。

输入:

  • –根顶点。

  • 方向–是否将根放在顶部或底部:

    • 方位=“向下”–孩子们被放在父母的下面

    • orientation=“顶部”–将孩子放在父母的上方

示例:

圣人: sage.graphs.graph_绘图 进口 图形绘图
圣人: = .霍夫曼单点图()
圣人:T型 = 图表()
圣人:T型.添加边(_E)(.最小平移树(starting_vertex(开始_顶点)=0))
圣人:T型.显示(布局=“树”, 树_根=0)  #间接文档测试
情节(**千瓦时)#

返回表示(di)图形的图形对象。

输入:

此方法接受的选项可在文件sage.graphs.graph_绘图模块,显示()方法。

注释

请参见这个 模块的 文档对于有关此方法默认值的信息。

我们可以指定一些非常精确的常见图形绘图:

圣人: 数学 进口 , 余弦, 圆周率
圣人:P(P) = .彼得森图表()
圣人:d日 = {“#FF0000”: [0, 5], “#FF9900”: [1, 6], “#FFFF00”: [2, 7],
....:     “#00FF00”: [, 8], “#0000FF”: [4,9]}
圣人:位置_十字路口 = {}
圣人:对于  在里面 范围(5):
....: x个 = 浮动(余弦(圆周率/2 + ((2*圆周率)/5)*))
....:  = 浮动((圆周率/2 + ((2*圆周率)/5)*))
....: 位置_十字路口[] = [x个,]
...
圣人:对于  在里面 范围(5, 10):
....: x个 = 浮动(0.5*余弦(圆周率/2 + ((2*圆周率)/5)*))
....:  = 浮动(0.5*(圆周率/2 + ((2*圆周率)/5)*))
....: 位置_十字路口[] = [x个,]
...
圣人:pl公司 = P(P).图表(销售时点情报系统=可能性(_D), 顶点_颜色=d日)
圣人:pl公司.显示()
../../_图像/graph_plot-4.svg

以下是一些具有典型选项的更常见图形:

圣人:C类 = .多维数据集图形(8)
圣人:P(P) = C类.图表(顶点标签=False(错误), 顶点_大小=0,
....:                graph_border(图形顺序)=真的)
圣人:P(P).显示()
../../_图像/graph_plot-5.svg
圣人: = .希伍德图表().复制(稀疏的=真的)
圣人:对于 u个, v(v),  在里面 .边缘(分类=真的):
....:    .设置边缘标签(u个, v(v), (f)'({u个},{v(v)})')
圣人:.图表(边缘_标签=真的).显示()
../../_图像/graph_plot-6.svg

打印选项也适用于有向图:

圣人:D类 = DiGraph(DiGraph)({
....:    0: [1, 10, 19], 1: [8, 2], 2: [, 6], : [19, 4],
....:    4: [17, 5], 5: [6, 15], 6: [7], 7: [8, 14], 8: [9],
....:    9: [10, 13], 10: [11], 11: [12, 18], 12: [16, 13],
....:    13: [14], 14: [15], 15: [16], 16: [17], 17: [18],
....:    18: [19], 19: []})
圣人:对于 u个, v(v),  在里面 D类.边缘(分类=真的):
....:    D类.设置边缘标签(u个, v(v), (f)'({u个},{v(v)})')
圣人:D类.图表(边缘_标签=真的, 布局=“圆形”).显示()
../../_图像/graph_plot-7.svg

此示例显示了边的着色:

圣人: sage.plot.颜色 进口 彩虹
圣人:C类 = .多维数据集图形(5)
圣人: = 彩虹(5)
圣人:边缘_颜色 = {}
圣人:对于  在里面 范围(5):
....:    边缘_颜色[[]] = []
圣人:对于 u个, v(v),  在里面 C类.边缘(分类=真的):
....:    对于  在里面 范围(5):
....:        如果 u个[] != v(v)[]:
....:            边缘颜色[[]].追加((u个, v(v), ))
圣人:C类.图表(顶点标签=False(错误), 顶点_大小=0,
....:            边缘_颜色=边缘_颜色).显示()
../../_图像/graph_plot-8.svg

使用隔板选项,我们可以分离出相同颜色的组顶点数量:

圣人:D类 = .十二面体图形()
圣人:圆周率 = [[6, 5, 15, 14, 7], [16, 13, 8, 2, 4],
....:      [12, 17, 9, , 1], [0, 19, 18, 10, 11]]
圣人:D类.显示(隔板=圆周率)
../../_图像/graph_plot-9.svg

回路也会正确绘制:

圣人: = .彼得森图表()
圣人:.allow_loops(允许循环)(真的)
圣人:.添加边缘(_E)(0,0)
圣人:.显示()
../../_图像/图形图-10.svg
圣人:D类 = DiGraph(DiGraph)({0:[0,1], 1:[2], 2:[]}, 循环=真的)
圣人:D类.显示()
圣人:D类.显示(边缘_颜色={(0, 1, 0): [(0, 1, ), (1, 2, )],
....:                    (0, 0, 0): [(2, , )]})
../../_图像/graph_plot-11.svg

更多选项:

圣人:销售时点情报系统 = {0: [0, 1.5], 1: [-0.8, 0.3], 2: [-0.6, -0.8],
....:       :[0.6, -0.8], 4:[0.8, 0.3]}
圣人: = 图表({0: [1], 1: [2], 2: [], : [4], 4: [0]})
圣人:.图表(销售时点情报系统=销售时点情报系统, 布局=“弹簧”, 迭代=0).情节()
由11个图形基元组成的图形对象
../../_图像/graph_plot-12.svg
圣人: = 图表()
圣人:P(P) = .图表().情节()
圣人:P(P).()
False(错误)
圣人: = DiGraph(DiGraph)()
圣人:P(P) = .图表().情节()
圣人:P(P).()
False(错误)

我们可以绘制多个图形:

圣人:T型 = 列表(.(7))
圣人:t吨 = T型[]
圣人:t吨.图表(高度={0: [0], 1: [4, 5, 1],
....:                     2: [2], : [, 6]}
....:           ).情节()
由14个图形基元组成的图形对象
../../_图像/图形图-13.svg
圣人:T型 = 列表(.(7))
圣人:t吨 = T型[]
圣人:t吨.图表(高度={0: [0], 1: [4, 5, 1],
....:                     2: [2], : [, 6]}
....:           ).情节()
由14个图形基元组成的图形对象
../../_图像/graph_plot-14.svg
圣人:t吨.设置边缘标签(0, 1, -7)
圣人:t吨.设置边缘标签(0, 5, )
圣人:t吨.设置边缘标签(0, 5, 99)
圣人:t吨.设置边缘标签(1, 2, 1000)
圣人:t吨.设置边缘标签(, 2, “垃圾邮件”)
圣人:t吨.设置边缘标签(2, 6, /2)
圣人:t吨.设置边缘标签(0, 4, 66)
圣人:t吨.图表(高度={0: [0], 1: [4, 5, 1],
....:                     2: [2], : [, 6]},
....:            边缘_标签=真的
....:           ).情节()
由20个图形图元组成的图形对象
../../_图像/图形图-15.svg
圣人:T型 = 列表(.(7))
圣人:t吨 = T型[]
圣人:t吨.图表(布局=“树”).显示()
../../_图像/graph_plot-16.svg

树布局也很有用:

圣人:t吨 = DiGraph(DiGraph)(“JCC???”@A??去??有限公司??去??”)
圣人:t吨.图表(布局=“树”, 树_根=0,
....:            树_方向=“向上”
....:           ).显示()
../../_图像/graph_plot-17.svg

更多示例:

圣人:D类 = DiGraph(DiGraph)({0:[1,2,], 2:[1,4], :[0]})
圣人:D类.图表().显示()
../../_图像/graph_plot-18.svg
圣人:D类 = DiGraph(DiGraph)(多重边=真的, 稀疏的=真的)
圣人:对于  在里面 范围(5):
....:  D类.添加边缘(_E)((,  + 1, “a”))
....:  D类.添加边缘(_E)((,  - 1, “b”))
圣人:D类.图表(边缘_标签=真的,
....:            边缘_颜色=D类._颜色_标签()
....:           ).情节()
由34个图形基元组成的图形对象
../../_图像/graph_plot-19.svg
圣人: = 图表({}, 循环=真的, 多重边=真的, 稀疏的=真的)
圣人:.添加边(_E)([(0, 0, “a”), (0, 0, “b”), (0, 1, “c”),
....:             (0, 1, “d”), (0, 1, “e”), (0, 1, “f”),
....:             (0, 1, “f”), (2, 1, “g”), (2, 2, “h”)])
圣人:.图表(边缘标签=真的,
....:            颜色_标签=真的,
....:            边缘_样式=“虚线”
....:           ).情节()
由22个图形基元组成的图形对象
../../_图像/graph_plot-20.svg

这个边缘_样式也可以以简短格式提供选项:

圣人:.图表(边缘_标签=真的,
....:            颜色_标签=真的,
....:            边缘样式='--'
....:           ).情节()
由22个图形基元组成的图形对象
集合边(_E)(**边缘_选项)#

设置边缘打印参数图形绘图对象。

此函数由构造函数调用,但也可以调用更新现有的边选项图形绘图对象。请注意,这些变化是累积的。

示例:

圣人: = 图表(循环=真的, 多重边=真的, 稀疏的=真的)
圣人:.添加边(_E)([(0, 0, “a”), (0, 0, “b”), (0, 1, “c”),
....:             (0, 1, “d”), (0, 1, “e”), (0, 1, “f”),
....:             (0, 1, “f”), (2, 1, “g”), (2, 2, “h”)])
圣人:普通合伙人 = .图表(顶点_大小=100, 边缘_标签=真的,
....:                 颜色_标签=真的, 边缘_样式=“虚线”)
圣人:普通合伙人.集合边(_E)(边缘_样式=“实心”)
圣人:普通合伙人.情节()
由22个图形基元组成的图形对象
../../_图像/graph_plot-21.svg
圣人:普通合伙人.集合边(_E)(边缘_颜色=“黑色”)
圣人:普通合伙人.情节()
由22个图形基元组成的图形对象
../../_图像/graph_plot-22.svg
圣人:d日 = DiGraph(DiGraph)(循环=真的, 多边缘=真的, 稀疏的=真的)
圣人:d日.添加边(_E)([(0, 0, “a”), (0, 0, “b”), (0, 1, “c”),
....:             (0, 1, “d”), (0, 1, “e”), (0, 1, “f”),
....:             (0, 1, “f”), (2, 1, “g”), (2, 2, “h”)])
圣人:普通合伙人 = d日.图表(顶点_大小=100, 边缘_标签=真的,
....:                 颜色_标签=真的, 边缘_样式=“虚线”)
圣人:普通合伙人.设置边缘(_E)(边缘_样式=“实心”)
圣人:普通合伙人.情节()
由24个图形原语组成的图形对象
../../_图像/graph_plot-23.svg
圣人:普通合伙人.集合边(_E)(边缘_颜色=“黑色”)
圣人:普通合伙人.情节()
由24个图形原语组成的图形对象
../../_图像/graph_plot-24.svg
设置操作系统()#

设置此GraphPlot的位置打印参数。

示例:

此函数由以下代码隐式调用:

圣人: = 图表({0: [1, 2], 2: [], 4: [0, 1]})
圣人:.图表(保存操作系统(_P)=真的, 布局=“圆形”)  #间接文档测试
5个顶点上的Graph的GraphPlot对象

以下说明了位置字典的格式,但已到期对于数值噪声,我们不检查数值本身:

圣人:.获取操作系统()
{0: (0.0, 1.0),
1: (-0.951..., 0.309...),
2: (-0.587..., -0.809...),
3: (0.587..., -0.809...),
4: (0.951..., 0.309...)}
圣人:T型 = 列表(.(7))
圣人:t吨 = T型[]
圣人:t吨.情节(高度={0: [0], 1: [4, 5, 1], 2: [2], : [, 6]})
由14个图形基元组成的图形对象
../../_图像/graph_plot-25.svg
设置顶点(_V)(**顶点_选项)#

为此设置顶点打印参数图形绘图.

此函数由构造函数调用,但也可以调用以更新现有的图形绘图对象。请注意,这些变化是累积的。

示例:

圣人: = 图表({}, 循环=真的, 多重边=真的, 稀疏的=真的)
圣人:.添加边缘(_E)([(0, 0, “a”), (0, 0, “b”), (0, 1, “c”),
....:             (0, 1, “d”), (0, 1, “e”), (0, 1, “f”),
....:             (0, 1, “f”), (2, 1, “g”), (2, 2, “h”)])
圣人:普通合伙人 = .图表(顶点_大小=100, 边缘_标签=真的,
....:                 颜色_标签=真的, 边缘_样式=“虚线”)
圣人:普通合伙人.设置顶点(_V)(谈话=真的)
圣人:普通合伙人.情节()
由22个图形基元组成的图形对象
圣人:普通合伙人.设置顶点(_V)(顶点_颜色=“绿色”, 顶点_形状='^')
圣人:普通合伙人.情节()
由22个图形基元组成的图形对象
../../_images/graph_plot-26.svg
../../_images/graph_plot-27.svg

顶点标签很灵活:

圣人: = .路径图(4)
圣人:.情节(顶点标签=False(错误))
由4个图形基元组成的图形对象
../../_images/graph_plot-28.svg
圣人: = .路径图(4)
圣人:.情节(顶点标签=真的)
由8个图形基元组成的图形对象
../../_图像/graph_plot-29.svg
圣人: = .路径图(4)
圣人:.情节(顶点标签=字典(拉链(, ['+', '-', '/', '*'])))
由8个图形基元组成的图形对象
../../_图像/graph_plot-30.svg
圣人: = .路径图(4)
圣人:.情节(顶点标签=λ x个: 字符串(x个 % 2))
由8个图形基元组成的图形对象
../../_图像/graph_plot-31.svg
显示(**千瓦时)#

显示与此关联的(di)图图形绘图对象。

输入:

此方法接受的所有参数sage.plot图形。图形.show().

注释

示例:

圣人:C类 = .多维数据集图形(8)
圣人:P(P) = C类.图表(顶点标签=False(错误), 顶点_大小=0,
....:                graph_border(图形顺序)=真的)
圣人:P(P).显示()
../../_图像/graph_plot-32.svg