使用Fruchterman和Reingold的力导向布局算法在平面上放置顶点。
用法
layout_with_fr(
graph,
coords = NULL,
dim = c(2, 3),
niter = 500,
start.temp = sqrt(vcount(graph)),
grid = c("auto", "grid", "nogrid"),
weights = NULL,
minx = NULL,
maxx = NULL,
miny = NULL,
maxy = NULL,
minz = NULL,
maxz = NULL,
coolexp = deprecated(),
maxdelta = deprecated(),
area = deprecated(),
repulserad = deprecated(),
maxiter = deprecated()
)
with_fr(...)
参数
- graph
要布局的图。边的方向被忽略。
- 坐标
顶点的可选起始位置。如果此参数不是
NULL
,则它应是一个适当的起始坐标矩阵。- dim
整数标量,2或3,布局的维度。二维布局放置在平面上,三维布局放置在3d空间中。
- niter
整数标量,要执行的迭代次数。
- start.temp
实数标量,起始温度。这是在一个步骤中,一个顶点沿一个轴允许的最大移动量。目前,它在迭代过程中线性减小到零。
- grid
字符标量,是否使用更快但不太准确的基于网格的算法实现。默认情况下(“auto”),如果图具有超过一千个顶点,则使用基于网格的实现。
- weights
一个给出边权重的向量。如果存在,默认情况下使用
weight
边属性。如果给出了权重,则沿边的吸引力将乘以给定的边权重。这使得连接到高度加权边的顶点彼此更靠近。权重必须为正数。- minx
如果不是
NULL
,则它必须是一个数值向量,给出顶点“x”坐标的下限。向量的长度必须与图中顶点的数量匹配。- maxx
类似于
minx
,但给出上限。- miny
类似于
minx
,但给出“y”坐标的下限。- maxy
类似于
minx
,但给出“y”坐标的上限。- minz
类似于
minx
,但给出“z”坐标的下限。- maxz
类似于
minx
,但给出“z”坐标的上限。- coolexp, maxdelta, area, repulserad
- maxiter
为了兼容性,
niter
的一个已弃用的同义词。- ...
传递给
layout_with_fr()
。
参考文献
Fruchterman, T.M.J. and Reingold, E.M. (1991). Graph Drawing by Force-directed Placement. Software - Practice and Experience, 21(11):1129-1164.
参见
layout_with_drl()
, layout_with_kk()
用于其他布局算法。
其他图布局: add_layout_()
, component_wise()
, layout_()
, layout_as_bipartite()
, layout_as_star()
, layout_as_tree()
, layout_in_circle()
, layout_nicely()
, layout_on_grid()
, layout_on_sphere()
, layout_randomly()
, layout_with_dh()
, layout_with_gem()
, layout_with_graphopt()
, layout_with_kk()
, layout_with_lgl()
, layout_with_mds()
, layout_with_sugiyama()
, merge_coords()
, norm_coords()
, normalize()
作者
Gabor Csardi csardi.gabor@gmail.com
示例
# Fixing ego
g <- sample_pa(20, m = 2)
minC <- rep(-Inf, vcount(g))
maxC <- rep(Inf, vcount(g))
minC[1] <- maxC[1] <- 0
co <- layout_with_fr(g,
minx = minC, maxx = maxC,
miny = minC, maxy = maxC
)
co[1, ]
#> [1] 0 0
plot(g,
layout = co, vertex.size = 30, edge.arrow.size = 0.2,
vertex.label = c("ego", rep("", vcount(g) - 1)), rescale = FALSE,
xlim = range(co[, 1]), ylim = range(co[, 2]), vertex.label.dist = 0,
vertex.label.color = "red"
)
axis(1)
axis(2)