我有一个圆形布局 igraph。我希望顶点标签显示在圆形区域之外。尝试玩周围vertex.label.cex
and vertex.label.degree
但没有用。请指教!
vertex.label.degree
需要一些认真的(但简单的)调整才能做到这一点。这是一个例子这个要点。这不是我的代码(它是@kieran的,我相信),但这是一个完全有效的示例。
### Here's one way to do it.
library(igraph)
library(ggplot2)
library(scales)
## The igraph docs say that vertex.label.degree controls the position
## of the labels with respect to the vertices. It's interpreted as a
## radian, like this:
##
## Value is : Label appears ... the node
## -pi/2: above
## 0: to the right of
## pi/2: below
## pi: to the left of
##
## We can generalize this. vertex.label.degree can take a vector as
## well as a scalar for its argument. So we write a function to
## calculate the right position for a label based on its vertex's location
## on the circle.
## Get the labels aligned consistently around the edge of the circle
## for any n of nodes.
## This code borrows bits of ggplot2's polar_coord function
## start = offset from 12 o'clock in radians
## direction = 1 for clockwise; -1 for anti-clockwise.
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)))
}
### Example
## Generate some fake data
n <- 15
g <- erdos.renyi.game(n, 0.5)
## Obviously labeling in this way this only makes sense for graphs
## laid out as a circle to begin with
la <- layout.circle(g)
lab.locs <- radian.rescale(x=1:n, direction=-1, start=0)
plot(g, layout=la, vertex.size=2, vertex.label.dist=1,
vertex.label.degree=lab.locs)
![enter image description here](https://i.stack.imgur.com/DJvXD.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)