小编use*_*291的帖子

ggplot2添加跨越facet边缘的注释

我想绘制一个矩形注释,它将跨越ggplot中的facet边框.

library(ggplot2)
myPlot <- ggplot(mpg, aes(displ, hwy)) + 
    geom_point() + 
    facet_grid(class ~ .)

# add annotation
myPlot +
  annotate("rect", xmin = 3, xmax = 4, ymin = -Inf, ymax = Inf, fill = "green", alpha = 1/5)
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的:

到目前为止我有什么

我想绘制一个横跨小平面边缘的大矩形,如下所示:

凌乱的油漆编辑我想要的东西

有没有办法用内置ggplot2代码执行此操作或使用ggforce或者我必须搞乱grid?我理想的用例仍然允许我myPlot作为一个ggplot对象,这就是为什么我要避免任何复杂的网格东西,直到这一点.

r ggplot2 ggforce

8
推荐指数
1
解决办法
248
查看次数

提取 tidygraph 中特定节点的邻域/子图

我在摸索某些在 igraph 中相对简单的 Tidygraph 操作时遇到了一些麻烦。

我特别想以不同的顺序分析特定的社区。我想我需要使用 Morphs 来实现这一点,但我还没有让它发挥作用。

library(tidygraph)
library(ggraph)
Run Code Online (Sandbox Code Playgroud)
net <- tibble::tibble(A = letters[1:6],
               B = rep(c("x", "y"), each = 3)) %>% 
  tidygraph::as_tbl_graph()
Run Code Online (Sandbox Code Playgroud)

例如,假设我有以下网络结构:

我想分析 x 的邻域。

net %>% 
  ggraph(layout = "nicely") +
    geom_edge_link() +
    geom_node_point(size = 10, fill = "white", shape = 21) +
    geom_node_text(aes(label = name)) +
    theme_graph()
Run Code Online (Sandbox Code Playgroud)

全网

iGraph 实现的工作原理如下:

提取节点 x 的邻域。

v <- net %>% 
  tidygraph::as.igraph() %>% 
  igraph::neighborhood(nodes = "x", order = 1)
Run Code Online (Sandbox Code Playgroud)

通过取消列出 igraph.vs 对象来构建子图

igraph::induced_subgraph(net, vids = unlist(v)) %>% 
  tidygraph::as_tbl_graph() %>% 
  ggraph(layout = …
Run Code Online (Sandbox Code Playgroud)

r igraph network-analysis tidygraph

5
推荐指数
1
解决办法
1368
查看次数

标签 统计

r ×2

ggforce ×1

ggplot2 ×1

igraph ×1

network-analysis ×1

tidygraph ×1