gpt4 book ai didi

r - 将顶点大小与 igraph 中的标签大小匹配

转载 作者:行者123 更新时间:2023-12-04 11:04:43 24 4
gpt4 key购买 nike

我正在尝试在 R 中使用 igraph 绘制小型网络。网络中的每个顶点都有一个名称,相当于它的标签。我想让每个顶点都有一个矩形符号,它的大小刚好适合它的标签。

这是我的主要灵感。

Map of Hyperboria

使用 igraph 执行此操作的最佳方法是什么?

编辑:更多信息

代码是here

jsonToNM <- function(jfile, directed=TRUE) {
# Requires "rjson" and "igraph"

nm.json <- fromJSON(file=jfile)
nm.graph <- c()

# Initialize the graph with the given nodes
g <- graph.empty(n=length(nm.json), directed=directed)
# Add their names
V(g)$name <- names(nm.json)
V(g)$label <- V(g)$name

# Now, add the edges
for(i in 1:length(nm.json)) {
# If the node has a "connected" field,
# then we note the connections by looking
# the names up.
if(length(nm.json[[i]]$connected > 0)) {
for(j in 1:length(nm.json[[i]]$connected)) {
# Add the entry
g <- g + edge(names(nm.json)[i],
nm.json[[i]]$connected[j])
}
}
}

plot(g, vertex.label.dist=1.5)
}

目前的输出低于。

current output

我的目标是将标签放置在顶点图形内,并扩展顶点的宽度以容纳标签。

最佳答案

这是一个例子。在一些肮脏的技巧(即将顶点大小乘以 200)中,关键是使用两个绘图命令,以便我们可以使用 strwidth() 来测量标签的宽度(和高度)。 , 在使用第一个(空)绘图设置绘图大小之后。

library(igraph)
camp <- graph.formula(Harry:Steve:Don:Bert - Harry:Steve:Don:Bert,
Pam:Brazey:Carol:Pat - Pam:Brazey:Carol:Pat,
Holly - Carol:Pat:Pam:Jennie:Bill,
Bill - Pauline:Michael:Lee:Holly,
Pauline - Bill:Jennie:Ann,
Jennie - Holly:Michael:Lee:Ann:Pauline,
Michael - Bill:Jennie:Ann:Lee:John,
Ann - Michael:Jennie:Pauline,
Lee - Michael:Bill:Jennie,
Gery - Pat:Steve:Russ:John,
Russ - Steve:Bert:Gery:John,
John - Gery:Russ:Michael)

V(camp)$label <- V(camp)$name
set.seed(42) ## to make this reproducable
co <- layout.auto(camp)

plot(0, type="n", ann=FALSE, axes=FALSE, xlim=extendrange(co[,1]),
ylim=extendrange(co[,2]))
plot(camp, layout=co, rescale=FALSE, add=TRUE,
vertex.shape="rectangle",
vertex.size=(strwidth(V(camp)$label) + strwidth("oo")) * 100,
vertex.size2=strheight("I") * 2 * 100)

igraph vertex label width

顺便提一句。这对于 SVG 图形来说不太好用,因为无法从 R 测量文本的宽度,SVG 设备只能进行猜测。

关于r - 将顶点大小与 igraph 中的标签大小匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com