0

我有这个数据框:

输入(df2)

structure(list(Receiver = structure(c(4L, 3L, 2L, 1L), .Label = c("Australia", 
"United Arab Emirates", "United Kingdom", "United States of America"
), class = "factor"), Sender = structure(c(1L, 1L, 1L, 1L), .Label = "United States of America", class = "factor")), .Names = c("Receiver", 
"Sender"), row.names = c(NA, -4L), class = "data.frame")

我想这样绘制和 igraph:

library(igraph)
g<-graph.data.frame(df2)
plot(g, layout = layout.kamada.kawai,  vertex.label = V(g)$name,  
     vertex.label.color= "red",  edge.arrow.size=0.8,  
      edge.curved=T, edge.label.color="white",                              
      edge.label.cex=0.8,vertex.shape="circle",edge.color="pink",
      vertex.color="lightblue", asp=0, margin=0)

我想在顶点内显示顶点标签,而不增加顶点的大小。任何想法我怎么能做到这一点?

4

2 回答 2

2

您可以在调用图之前执行以下操作:

  V(g)$label.cex <- 0.5

但是为什么不使用名称的快捷方式呢?

 V(g)$name<-c('USA','UK','UAE','Aus')

在此处输入图像描述

dat <- structure(list(Receiver = structure(c(4L, 3L, 2L, 1L), .Label = c("Australia", 
                                                                  "United Arab \nEmirates", "United \nKingdom", "United \nStates of \nAmerica"
), class = "factor"), Sender = structure(c(1L, 1L, 1L, 1L), .Label = "United \nStates of \nAmerica", class = "factor")), .Names = c("Receiver", 
                                                                                                                                "Sender"), row.names = c(NA, -4L), class = "data.frame")


library(igraph)
g<-graph.data.frame(dat)
V(g)$label.cex <- 0.6
plot(g, layout = layout.kamada.kawai,  vertex.label = V(g)$name,  
     vertex.label.color= "red",  edge.arrow.size=0.8,  
     edge.curved=T, edge.label.color="white",                              
     edge.label.cex=0.8,vertex.shape="circle",edge.color="pink",
     vertex.color="lightblue", asp=0, margin=0)
于 2013-01-11T14:47:48.783 回答
0

以下可能会有所帮助。

# size the network nodes based on their centrality
deg = igraph::degree(graph = g, v = V(g), mode = "all", loops = TRUE, normalized = FALSE);
igraph::V(g)$size = deg*3;

# set the label size based on the node size
igraph::V(g)$label.cex = igraph::V(g)$size/max(igraph::V(g)$size);
于 2017-08-27T07:44:08.827 回答