跳到内容

tkplot() 及其配套函数用作交互式图绘制工具。 但是,并非绘图的所有参数都可以立即交互式更改,例如,顶点、边的颜色以及其他参数必须预先定义。

用法

tkplot(graph, canvas.width = 450, canvas.height = 450, ...)

tk_close(tkp.id, window.close = TRUE)

tk_off()

tk_fit(tkp.id, width = NULL, height = NULL)

tk_center(tkp.id)

tk_reshape(tkp.id, newlayout, ..., params)

tk_postscript(tkp.id)

tk_coords(tkp.id, norm = FALSE)

tk_set_coords(tkp.id, coords)

tk_rotate(tkp.id, degree = NULL, rad = NULL)

tk_canvas(tkp.id)

参数

graph

要绘制的 graph

canvas.width, canvas.height

tkplot 绘图区域的大小。

...

其他绘图参数。 有关完整列表,请参见 igraph.plotting

tkp.id

要关闭/调整大小/等的 tkplot 窗口的 ID。

window.close

保留默认值。

width

用于生成新坐标的矩形的宽度。

height

用于生成新坐标的矩形的高度。

newlayout

新布局,参见 tkplot 的 layout 参数。

params

列表中的额外参数,传递给布局函数。

norm

逻辑值,是否应该标准化坐标。

坐标

两列数字矩阵,顶点的新坐标,采用绝对坐标。

degree

旋转绘图的度数。

rad

旋转绘图的度数,以弧度为单位。

tkplot() 返回一个整数,即绘图的 id,可用于从命令行对其进行操作。

tk_canvas() 返回 tkwin 对象,即 Tk 画布。

tk_coords() 返回一个包含坐标的矩阵。

tk_close()tk_off()tk_fit()tk_reshape()tk_postscript()tk_center()tk_rotate() 以不可见的方式返回 NULL

详细信息

tkplot() 是一个交互式图形绘制工具。 它在此阶段的开发还不是很完善,但仍然应该有用。

大多数时候它的处理应该非常简单,这里有一些说明和提示。

有不同的弹出菜单,通过鼠标右键激活,分别用于顶点和边。 如果光标下的顶点/边是选择的一部分,则两者都对当前选择进行操作;如果不是,则对光标下的顶点/边进行操作。

一次只能激活一个选择,顶点选择或边选择。 可以通过按住 control 键并用鼠标左键单击顶点/边来将顶点/边添加到选择中。 再次执行此操作将取消选择顶点/边。

也可以从“选择”菜单中进行选择。“选择一些顶点”对话框允许为要选择的顶点提供表达式:这可以是逗号分隔的数字 R 表达式列表,例如 1,2:10,12,14,15。 类似地,在“选择一些边”对话框中,可以给出两个这样的列表,并且所有将第一个列表中的顶点连接到第二个列表中的顶点的边都将被选择。

在颜色对话框中,也可以使用像“orange”这样的颜色名称或 RGB 表示法。

tkplot() 命令创建一个新的 Tk 窗口,其中包含 graph 的图形表示。 该命令返回一个整数,即 tkplot id。 其他命令利用此 id 来查询或操作绘图。

tk_close() 关闭 id 为 tkp.id 的 Tk 绘图。

tk_off() 关闭所有 Tk 绘图。

tk_fit() 将绘图调整到给定的矩形(widthheight),如果其中一些是 NULL,则使用绘图窗口的实际物理宽度或高度。

tk_reshape() 将新布局应用于绘图,其可选参数将被收集到一个类似于 layout.par 的列表中。

tk_postscript() 创建一个对话窗口,用于以 postscript 格式保存绘图。

tk_canvas() 返回属于图形绘图的 Tk 画布对象。 然后可以直接操作画布,例如可以添加标签,可以以编程方式将其保存到文件中等。 请参见下面的示例。

tk_coords() 返回矩阵中顶点的坐标。 每行对应于一个顶点。

tk_set_coords() 设置顶点的坐标。 两列矩阵指定新位置,每行对应于一个顶点。

tk_center() 将图形移动到其绘图窗口的中心。

tk_rotate() 旋转图形,其参数可以以度为单位或以弧度为单位给出。

tkplot.center tkplot.rotate

示例


g <- make_ring(10)
tkplot(g)

## Saving a tkplot() to a file programmatically
g <- make_star(10, center=10) 
E(g)$width <- sample(1:10, ecount(g), replace=TRUE)
lay <- layout_nicely(g)

id <- tkplot(g, layout=lay)
canvas <- tk_canvas(id)
tcltk::tkpostscript(canvas, file="/tmp/output.eps")
tk_close(id)

## Setting the coordinates and adding a title label
g <- make_ring(10)
id <- tkplot(make_ring(10), canvas.width=450, canvas.height=500)

canvas <- tk_canvas(id)
padding <- 20
coords <- norm_coords(layout_in_circle(g), 0+padding, 450-padding,
                      50+padding, 500-padding)
tk_set_coords(id, coords)

width <- as.numeric(tkcget(canvas, "-width"))
height <- as.numeric(tkcget(canvas, "-height"))
tkcreate(canvas, "text", width/2, 25, text="My title",
         justify="center", font=tcltk::tkfont.create(family="helvetica",
         size=20,weight="bold"))

作者

Gabor Csardi csardi.gabor@gmail.com