R igraph 手册页

如果您从 R 中使用 igraph,请使用此选项

绘制图 {igraph}R 文档

绘制图

描述

本手册页讨论了三个绘图函数 plot.igraphtkplotrglplot 的共同部分

详细信息

igraph 包中目前有三个不同的函数可以以各种方式绘制图

plot.igraph 对 R 设备进行简单的非交互式 2D 绘图。实际上,它是 plot 泛型函数的实现,因此您可以编写 plot(graph) 而不是 plot.igraph(graph)。由于它使用了标准的 R 设备,因此它支持 R 具有输出设备的每种输出格式。该列表非常令人印象深刻:PostScript、PDF 文件、XFig 文件、SVG 文件、JPG、PNG,当然您也可以使用默认设备或美观的抗锯齿 Cairo 设备绘制到屏幕。有关更多信息,请参阅 plot.igraph

tkplot 使用 tcltk 包进行交互式 2D 绘图。它只能处理中等大小的图,一千个顶点可能已经太多了。在发出 tkplot 命令后,可以交互地更改绘制图的一些参数:顶点的位置、颜色和大小以及边的颜色和宽度。有关详细信息,请参阅 tkplot

rglplot 是一个实验性函数,用于使用 OpenGL 在 3D 中绘制图。有关更多信息,请参阅 rglplot

另请检查下面的示例。

如何指定图形参数

有三种方法可以为下面“参数”部分中描述的参数赋值。我们按优先级顺序给出这三种方法。

第一种方法是向绘图命令提供命名参数:plot.igraphtkplotrglplot。顶点的参数以“vertex.”为前缀,边的参数以“edge.”为前缀,全局参数没有前缀。例如,可以通过参数 vertex.color 给定顶点的颜色,而 edge.color 设置边的颜色。layout 给定图的布局。

第二种方法是将顶点、边和图属性分配给图。这些属性没有前缀,即顶点的颜色取自 color 顶点属性,边的颜色取自 color 边属性。图的布局由 layout 图属性给出。(始终假设不存在相应的命令参数。)如果要为图分配给定的“外观”,设置顶点和边属性非常方便,属性会与图一起保存,如果您使用 save 保存图,或者以 GraphML 格式使用 write_graph 保存图,那么图在再次加载后将具有相同的外观。

如果未在命令行中给出参数,并且相应的顶点/边/图属性也缺失,则还会检查由 igraph_options 处理的常规 igraph 参数。顶点参数以“vertex.”为前缀,边参数以“edge.”为前缀,诸如 layout 之类的常规参数以“plot”为前缀。如果您希望所有或大多数图具有相同的外观、顶点大小、顶点颜色等,这些参数非常有用。那么您无需在每次绘图时都设置这些参数,也无需为每个图分配顶点/边属性。

如果此处描述的三种方式均未指定参数的值,则使用其默认值,如源代码中所给出的。

不同的参数可以具有不同的类型,例如,顶点颜色可以作为带有颜色名称的字符向量给出,或者作为带有当前调色板中颜色编号的整数向量给出。不同的类型对于不同的参数有效,这将在下一节中详细讨论。然而,始终为真的是,参数始终可以是函数对象,在该函数对象中,将使用图作为其单个参数来调用该函数对象,以获取参数的“适当”值。(如果该函数返回另一个函数对象,则不会再次调用该函数对象……)

参数列表

首先是顶点参数,请注意,如果它们用作参数或通过 igraph_options 设置,则需要添加“vertex.”前缀。参数的值可以是对于每个顶点都有效的标量,也可以是对于每个顶点都有单独值的向量。(较短的向量会被循环使用。)

size

顶点的大小,数值标量或向量,在后一种情况下,每个顶点的大小可能不同。调整此顶点大小,以便对于所有三个绘图命令的给定值,顶点的大小大致相同。它不需要是整数。

默认值为 15。这足以在顶点上放置短标签。

size2

顶点的“另一个”大小,对于某些顶点形状。对于各种矩形形状,这给出了顶点的高度,而 size 给出了宽度。对于可以使用单个数字指定大小的形状,则忽略它。

默认值为 15。

color

顶点的填充颜色。如果它是数值,则使用当前调色板,请参阅 palette。如果它是字符向量,那么它可以包含整数值、命名颜色或具有三个或四个字节的 RGB 指定颜色。所有以“#”开头的字符串都被假定为 RGB 颜色规范。可以混合命名颜色和 RGB 颜色。请注意,tkplot 忽略 RGB 颜色规范中的第四个字节(alpha 通道)。

对于 plot.igraph 和整数值,使用默认的 igraph 调色板(请参阅下面的“palette”参数)。请注意,这与 R 调色板不同。

如果您不希望(某些)顶点具有任何颜色,请提供 NA 作为颜色名称。

默认值为“SkyBlue2”。

frame.color

顶点框架的颜色,允许与填充颜色相同的格式。

如果您不希望顶点具有框架,请提供 NA 作为颜色名称。

默认情况下,它是“black”。

frame.width

顶点框架的宽度。

默认值为 1。

shape

顶点的形状,目前“circle”、“square”、“csquare”、“rectangle”、“crectangle”、“vrectangle”、“pie”(请参阅 vertex.shape.pie)、“sphere”和“none”受到支持,并且仅受 plot.igraph 命令支持。“none”根本不绘制顶点,尽管会绘制顶点标签(如果给定)。有关顶点形状的详细信息,请参阅 shapes,有关使用饼图作为顶点的详细信息,请参阅 vertex.shape.pie

sphere”顶点形状将顶点绘制为给定颜色和大小的 3D 光线追踪球体。这会生成栅格图像,并且仅受某些图形设备支持。在某些设备上,不支持栅格透明度,并且球体没有透明背景。请参阅 dev.capabilities 和“rasterImage”功能以检查您的设备是否受支持。

默认情况下,顶点绘制为圆形。

label

顶点标签。它们将被转换为字符。指定 NA 以省略顶点标签。

默认顶点标签是顶点 ID。

label.family

用于顶点标签的字体系列。由于不同的绘图命令可以使用不同的字体,因此它们以不同的方式解释此参数。然而,基本表示法被 plot.igraphtkplot 理解。rglplot 现在根本不支持字体,它完全忽略此参数。

对于 plot.igraph,此参数仅作为参数 family 传递给 text

对于 tkplot,会执行一些转换。如果此参数是现有 Tk 字体的名称,那么将使用该字体,并且完全忽略 label.fontlabel.cex 参数。如果它是基本系列(serif、sans、mono)之一,那么将使用 Times、Helvetica 或 Courier 字体,这些字体保证在所有系统上都存在。对于“symbol”基本系列,如果符号字体可用,我们将使用符号字体,否则使用名称中带有“symbol”的第一个字体。如果该参数不是基本系列的名称,也不是命名的 Tk 字体,那么我们会将其传递给 tkfont.create,并希望用户知道自己在做什么。在这种情况下,label.fontlabel.cex 参数也会传递给 tkfont.create

默认值为“serif”。

label.font

要在字体系列中用于顶点标签的字体。它的解释方式与 font 图形参数相同:1 是纯文本,2 是粗体,3 是斜体,4 是粗体和斜体,5 指定符号字体。

对于 plot.igraph,此参数仅传递给 text

对于 tkplot,如果 label.family 参数不是 Tk 字体的名称,那么此参数用于设置新创建的字体是否应为斜体和/或粗体。否则将被忽略。

对于 rglplot,它将被忽略。

默认值为 1。

label.cex

顶点标签的字体大小。它被解释为某些设备相关的基本字体大小的乘法因子。

对于 plot.igraph,它仅作为参数 cex 传递给 text

对于 tkplot,它乘以 12,然后用作 tkfont.createsize 参数。因此,对于 tkplot,基本字体为 12。

对于 rglplot,它将被忽略。

默认值为 1。

label.dist

标签与顶点中心的距离。如果它是 0,那么标签位于顶点中心。如果它是 1,那么标签显示在顶点旁边。

默认值为 0。

label.degree

它定义了顶点标签相对于顶点中心的位置。它被解释为弧度角,零表示“向右”,“pi”表示向左,向上为 -pi/2,向下为 pi/2

默认值为 -pi/4

label.color

标签的颜色,有关可能的值,请参阅前面讨论的 color 顶点参数。

默认值为 black

边参数需要在用作参数或由 igraph_options 设置时添加“edge.”前缀。边参数

color

边的颜色,有关可能的值,请参阅 color 顶点参数。

默认情况下,此参数为 darkgrey

width

边的宽度。

默认值为 1。

arrow.size

箭头的大小。目前这是一个常量,因此对于每条边都相同。如果提交了一个向量,那么只使用第一个元素,即,如果从边属性中获取它,那么只使用第一条边的属性来绘制所有箭头。这将来可能会改变。

默认值为 1。

arrow.width

箭头的宽度。目前这是一个常量,因此对于每条边都相同。如果提交了一个向量,那么只使用第一个元素,即,如果从边属性中获取它,那么只使用第一条边的属性来绘制所有箭头。这将来可能会改变。

此参数目前仅被 plot.igraph 使用。

默认值为 1,这给出了与此选项出现在 igraph 中之前的宽度相同的宽度。

lty

边的线条类型。接受的格式几乎与标准图形 par 相同,0 和“blank”表示没有边,1 和“solid”表示实线,其他可能的值为:2 (“dashed”)、3 (“dotted”)、4 (“dotdash”)、5 (“longdash”)、6 (“twodash”)。

tkplot 还接受标准的 Tk 线条类型字符串,但它不支持“blank”线条,而是使用类型“1”代替类型“0”,即,将绘制实线。

对于 rglplot,此参数将被忽略。

默认值为类型 1,即实线。

label

边标签。它们将被转换为字符。指定 NA 以省略边标签。

默认情况下,省略边标签。

label.family

边标签的字体系列。有关详细信息,请参阅具有相同名称的顶点参数。

label.font

边标签的字体。有关详细信息,请参阅前面讨论的相应顶点参数。

label.cex

边标签的字体大小,有关详细信息,请参阅相应的顶点参数。

label.color

边标签的颜色,有关如何指定颜色,请参阅 color 顶点参数。

label.x

可以在此处显式地给出边标签的水平坐标。NA 元素将被自动计算的坐标替换。如果为 NULL,则自动计算所有边的水平坐标。此参数仅受 plot.igraph 支持。

label.y

label.x 相同,但适用于垂直坐标。

curved

指定是否绘制曲线边。它可以是逻辑向量或标量,也可以是数值向量或标量。

首先,复制该向量,使其长度与图中的边数相同。然后,单独解释每条边。数值指定边的曲率;零曲率表示直线边,负值表示边顺时针弯曲,正值表示边逆时针弯曲。TRUE 表示曲率 0.5,FALSE 表示曲率零。

默认情况下,指定曲率的向量通过调用 curve_multiple 函数来计算。此函数确保多个边是弯曲的并且都是可见的。循环边将忽略此参数。

默认值为 FALSE

目前 rglplot 忽略此参数。

arrow.mode

此参数可用于指定应为哪些边绘制箭头。如果用户(以三种方式中的任何一种)给出了此参数,那么它将指定哪些边将具有前向、后向箭头,或者两者都有,或者根本没有箭头。与往常一样,此参数可以是向量或标量值。它可以是整数或字符类型。如果它是整数,那么 0 表示没有箭头,1 表示后向箭头,2 表示前向箭头,3 表示两者都有。如果它是字符向量,那么“<”和“<-”指定后向箭头,“>”和“->”指定前向箭头,“<>”和“<->”表示两个箭头都有。所有其他值表示没有箭头,也许您应该使用“-”或“–”来指定没有箭头。

提示:此参数可用作绘制“混合”图的“廉价”解决方案:图中有些边是有向的,有些边是无向的。如果想要这样做,那么请创建一个有向图,因为从 0.4 版本开始,可以在无向图中交换边列表中的顶点对。

默认情况下,对于无向图,不会绘制任何箭头,对于有向图,将根据其方向为每条边绘制一个箭头。这并不令人惊讶,这是预期的行为。

loop.angle

给出绘制循环边的弧度角。有关如何解释此参数,请参阅 label.dist 顶点参数。

默认值为 0。

loop.angle2

给出绘制循环边的第二个弧度角。这仅在 3D 中使用,在 2D 中 loop.angle 就足够了。

默认值为 0。

其他参数

layout

函数或数值矩阵。它指定顶点将如何放置在图上。

如果它是数值矩阵,那么该矩阵必须为每个顶点都有一行,指定其坐标。该矩阵应至少有两列,分别用于 xy 坐标,并且还可以有第三列,这将是 3D 图的 z 坐标,并且对于 2D 图将被忽略。

如果为 3D 绘图函数 rglplot 给出了两列矩阵,那么第三列将被假定为每个顶点的 1。

如果 layout 是一个函数,那么将使用 graph 作为单个参数来调用此函数,以确定实际坐标。该函数应返回一个具有两列或三列的矩阵。对于 2D 图,第三列将被忽略。

默认值为 layout_nicely,这是一个智能函数,可根据图选择一个布局器。

边距

在图的下方、上方、左侧和右侧的空白空间量,它是长度为四的数值向量。通常 0 到 0.5 之间的值是有意义的,但也可能有负值,这将使图放大到图的一部分。如果它短于四,那么它将被循环使用。

rglplot 不支持此参数,因为它可以通过更灵活的方式放大和缩小图形。

其默认值为 0。

palette

用于顶点颜色的调色板。默认值为 categorical_pal,这是一个对色盲友好的分类调色板。有关详细信息和其他调色板,请参阅其手册页。此参数仅受 plot 支持,而不受 tkplotrglplot 支持。

rescale

逻辑常量,是否将坐标重新缩放到 [-1,1]x[-1,1](x[-1,1]) 区间。未为 tkplot 实现此参数。

默认为 TRUE,布局将被重新缩放。

asp

数值常量,它给出了 plotasp 参数,即纵横比。如果您不想给出纵横比,请在此处提供 0。tkplotrglplot 将忽略它。

默认为 1。

frame

布尔值,是否在图周围绘制框架。tkplotrglplot 将忽略它。

默认为 FALSE

main

主图的总体标题。如果 annotate.plot igraph 选项为 FALSE,则默认值为空,否则为图的 name 属性。请参阅基本 plot 函数的相同参数。仅受 plot 支持。

sub

主图的副标题,默认值为空。仅受 plot 支持。

xlab

x 轴的标题,如果 annotate.plot igraph 选项为 FALSE,则默认值为空,如果为 TRUE,则为顶点和边的数量。仅受 plot 支持。

ylab

y 轴的标题,默认值为空。仅受 plot 支持。

作者

Gabor Csardi csardi.gabor@gmail.com

参见

plot.igraphtkplotrglplotigraph_options

示例

## Not run: 

# plotting a simple ring graph, all default parameters, except the layout
g <- make_ring(10)
g$layout <- layout_in_circle
plot(g)
tkplot(g)
rglplot(g)

# plotting a random graph, set the parameters in the command arguments
g <- barabasi.game(100)
plot(g, layout=layout_with_fr, vertex.size=4,
     vertex.label.dist=0.5, vertex.color="red", edge.arrow.size=0.5)

# plot a random graph, different color for each component
g <- sample_gnp(100, 1/100)
comps <- components(g)$membership
colbar <- rainbow(max(comps)+1)
V(g)$color <- colbar[comps+1]
plot(g, layout=layout_with_fr, vertex.size=5, vertex.label=NA)

# plot communities in a graph
g <- make_full_graph(5) %du% make_full_graph(5) %du% make_full_graph(5)
g <- add_edges(g, c(1,6, 1,11, 6,11))
com <- cluster_spinglass(g, spins=5)
V(g)$color <- com$membership+1
g <- set_graph_attr(g, "layout", layout_with_kk(g))
plot(g, vertex.label.dist=1.5)

# draw a bunch of trees, fix layout
igraph_options(plot.layout=layout_as_tree)
plot(make_tree(20, 2))
plot(make_tree(50, 3), vertex.size=3, vertex.label=NA)
tkplot(make_tree(50, 2, mode="undirected"), vertex.size=10,
vertex.color="green")

## End(Not run)

[包 igraph 版本 1.3.5 索引]