在R中圆图的顶点外自由放置顶点标签

在R中圆图的顶点外自由放置顶点标签,r,igraph,labels,labeling,R,Igraph,Labels,Labeling,我目前正在尝试在R中显示一个圆图,它能够将每个节点的标签放在节点本身的旁边,但在节点本身之外 我查看了一些答案,并尝试了其中一个,建议我通过以下方式为每个节点本身指定以弧度表示的位置: radian.rescale <- function(x, start=0, direction=1) { c.rotate <- function(x) (x + start) %% (2 * pi) * direction c.rotate(scales::rescale(x, c(0,

我目前正在尝试在R中显示一个圆图,它能够将每个节点的标签放在节点本身的旁边,但在节点本身之外

我查看了一些答案,并尝试了其中一个,建议我通过以下方式为每个节点本身指定以弧度表示的位置:

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:n, direction=-1, start=0)
plot(sev, layout=la, vertex.size=25, vertex.label.dist=5,
     vertex.label.degree=lab.locs, vertex.label.color="black")
我只是试着对一个分别有七个和八个节点的圆图进行测试,下面是我用七个节点测试它的内容:

##testing graph labeling
library(igraph)
library(ggplot2)
library(scales)

##making a 7-node circle graph
sev=make_graph(c(1,2, 2,3, 3,4, 4,5, 5,6, 6,7, 7,1))
sev=as.undirected(sev)
#relabel specific nodes blue
j=1;#index of vertex to start coloring
 V(sev)$color="white"; #Need to default to white, otherwise will color all  blue
V(sev)$color[(j)%%7]="dodgerblue";
V(sev)$color[(j+1)%%7]="dodgerblue";
V(sev)$color[(j+2)%%7]="dodgerblue";
la<-layout.circle(sev)
plot(sev)
text("label",locator(1))
测试图形标签 图书馆(igraph) 图书馆(GG2) 图书馆(比例尺) ##制作7节点圆图 sev=生成图(c(1,2,2,3,3,4,4,5,5,6,6,7,1)) sev=as.未定向(sev) #将特定节点重新标记为蓝色 j=1#要开始着色的顶点索引 V(sev)$color=“白色”#需要默认为白色,否则将全部为蓝色 V(sev)$color[(j)%%7]=“道奇蓝”; V(sev)$color[(j+1)%%7]=“道奇蓝”; V(sev)$color[(j+2)%%7]=“道奇蓝”;
看看你的两个版本

第二个版本,
文本(定位器(1),“标签”)
应允许您手动放置标签

但是你的第一个版本看起来并没有那么糟糕。由于您的第二个版本将标签放在节点中,因此我将标签移到了那里,并将字体增大了两倍,以演示如何操作(
vertex.label.cex
而不是
cex
)。我不知道你想要什么尺寸,但你应该可以从这里调整

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:n, direction=-1, start=0)
plot(sev, layout=la, vertex.size=25, vertex.label.dist=0,
     vertex.label.degree=lab.locs, vertex.label.color="black", 
     vertex.label.cex=2)

radian.rescale看起来您没有以正确的形式或顺序将参数设置为
text()
。使用(定位器(1),文本(x,y,“标签”)
怎么样。这将有助于为您的第一次尝试提供一个良好的环境。现在,如果我们按照您的代码
文本(定位器(1),“标签”)
的精神使用来自或更多的数据,则“lab.locs”没有定义。您刚才的参数顺序错误。谢谢,这两种解决方案都是解决我的问题的可行方法!太好了,谢谢!我最终使用了定位器方法,但正如您所指出的,vertex.label.cex也是调整标签大小的正确方法。
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:n, direction=-1, start=0)
plot(sev, layout=la, vertex.size=25, vertex.label.dist=0,
     vertex.label.degree=lab.locs, vertex.label.color="black", 
     vertex.label.cex=2)