【发布时间】:2019-11-09 17:09:32
【问题描述】:
我正在尝试将我的顶点的标签放置在圆形图之外。我已经阅读了很多关于这方面的帖子,包括 Placing vertex.label outside a circular layout in igraph 和 Freely placing vertex labels outside of vertices for a circle graph in R。
问题是我的顶点被缩放到不同的大小,因此将标签直接放置在顶点之外,无论顶点有多大/多小,都不能按我的意愿工作。
我正在使用此问题 (Placing vertex.label outside a circular layout in igraph) 的最佳答案中的代码来生成位置。
当我删除不同大小的节点时,标签会朝正确的方向移动,但其中一些并不完全在顶点之外,因为有些名称太长了。
# set up dummy data
players <- c("Jack Taylor", "John", "Mike", "Jackson Hubbard", "Matt", "Casey", "Adam")
points <- c(20, 10, 5, 8, 15, 12, 30)
stats <- data.frame(name = players, points = points)
from <- c("Jack Taylor", "Jackson Hubbard", "Adam", "Matt", "Jack Taylor", "John")
to <- c("John", "Jack Taylor", "Jackson Hubbard", "Adam", "Adam", "Casey")
count <- c(2, 3, 5, 2, 1, 1)
assists <- data.frame(from = from, to = to, count = count)
home_weighted_net <- graph_from_data_frame(d=assists, vertices=players, directed=T)
V(home_weighted_net)$size <- points * 3
V(home_weighted_net)$label.cex <- 0.5
E(home_weighted_net)$width <- assists$count
# generate positions and graph
radian.rescale <- function(x, start=0, direction=1) {
c.rotate <- function(x) (x + start) %% (2 * pi) * direction
c.rotate(scales::rescale(x, c(0, 2 * pi), range(x)))
}
lab.locs <- radian.rescale(x=1:7, direction=-1, start=0)
lay <- layout.circle(home_weighted_net)
plot(home_weighted_net, layout= lay, vertex.label.degree=lab.locs, vertex.label.dist= 2)
有没有办法在设置放置时考虑顶点大小?
另外,有没有办法让标签完全在顶点之外,不管字符串有多长?
【问题讨论】: