【发布时间】:2020-11-19 18:26:31
【问题描述】:
我想知道如何在ggplot 上的某些点周围绘制一个循环或形状,或者甚至有可能吗?
我同时使用igraph 和ggnet2 来创建一个情节...一个玩具示例如下所示。基本上,我正在创建一个简单的网络,使用igraph 的集群算法来告诉哪些节点应该集群在一起。然后我使用ggnet2 绘制网络,并为与它们的集群对应的节点着色。我正在使用ggnet2 进行绘图,因为它与ggplot2 兼容,因此我可以在绘图中添加额外的ggplot2 参数/参数。在下面的示例中,我实际上是使用geom_point 覆盖igraph 节点。
library(igraph)
library(GGally)
direction <- c(2,1,3,1,4,1,5,1,3,2,4,2,5,2,4,3,5,3,5,4)
gr <- matrix(direction, nrow = 2)
x1 <- 10.59
x2 <- 15.74
x3 <- 5
x4 <- 18
x5 <- 7
RImp <- data.frame(x1,x2,x3,x4,x5)
nam <- names(RImp)
RImp <- as.numeric(RImp)
Rint <- c(2.96, 1.34, 1.27, 1.1, 2.22, 1.24, 3.11,
2.52, 0.96, 1.08)
net.bg <- make_graph(gr, 5)
com <- cluster_optimal(net.bg)
V(net.bg)$color <- com$membership
group <- V(net.bg)$color
group <- factor(group)
colrs <- adjustcolor( c("yellow", "red", "blue", "black"))
g <- set_graph_attr(net.bg, "layout", layout_with_kk(net.bg))
colrs <- adjustcolor( c("yellow", "red", "blue", "black"))
colorC <- colrs[group]
pp <- ggnet2(g,
mode = "circle",
size = 0,
label = nam,
edge.size = Rint,
edge.color = "grey") +
theme(legend.text = element_text(size = 10), legend.position = "none") +
geom_label(aes(label = nam),nudge_y = 0.08) +
geom_point(aes(fill = RImp), size = RImp, col = colorC)
pp
因此,节点 1,2 和 3 聚集在一起......并且 4 和 5 聚集在一起。但我想知道是否可以做这样的事情(我很快使用图像编辑软件创建了这个):
所以,在上面的例子中,我想使用ggplot在某些节点周围绘制一个形状、多边形或其他东西...这可能吗?我不知道从哪里开始!?
【问题讨论】:
-
看看ggalt的函数
geom_encircle或查看这里royfrancis.com/scatterplot-annotation