查看原文
其他

ggplot2优雅的绘制网络图

ANERYAN R语言数据分析指南 2023-06-15

欢迎关注R语言数据分析指南

本节来介绍如何使用「ggplot2」来构建数据绘制网络图,下面来看具体案例操作

安装并加载R包

package.list=c("tidyverse","magrittr","patchwork")

for (package in package.list) {
  if (!require(package,character.only=T, quietly=T)) {
    install.packages(package)
    library(package, character.only=T)
  }
}

导入数据构建数据集

plot_data <- read_tsv("data.xls") %>% 
  mutate(theta = seq(0,2 * pi, length.out = 100),x = 10 * cos(theta),
         y = 10 * sin(theta),labx = 12 * cos(theta),
         laby = 12 * sin(theta),angle = 360*(theta/(2*pi)))

数据清洗

Creativity <- plot_data %>%
  filter(category == "Creativity") %>%
  select(x, y) %>%
  mutate(id = row_number())

Creativity_edges <- tibble(expand.grid(id1 = Creativity$id, id2 = Creativity$id)) %>%
  inner_join(Creativity, by = c("id1" = "id")) %>%
  inner_join(Creativity, by = c("id2" = "id")) %>%
  select(-c(id1, id2)) %>%
  set_colnames(c("x""y""xend""yend"))

Identity <- plot_data %>%
  filter(category == "Identity") %>%
  select(x, y) %>%
  mutate(id = row_number())

Identity_edges <- tibble(expand.grid(id1 = Identity$id, id2 = Identity$id)) %>%
  inner_join(Identity, by = c("id1" = "id")) %>%
  inner_join(Identity, by = c("id2" = "id")) %>%
  select(-c(id1, id2)) %>%
  set_colnames(c("x""y""xend""yend"))

数据可视化1

p1 <- ggplot() +
  geom_segment(data = Creativity_edges,mapping = aes(x = x, y = y, xend = xend, yend = yend),
               colour = alpha("#884c94", 0.5), size = 0.05) +
  geom_point(data = plot_data,mapping = aes(x = x, y = y, colour = category),size =1) +
  geom_text(data = plot_data,
            mapping = aes(x = labx, y = laby, label = name, angle = angle, colour = category),
            family = "ubuntu", hjust = 0, size =4) +
  scale_colour_manual("", values = c("white""#884c94""#26aa83""#4a75b0""#ff3377")) +
  labs(subtitle = "Creativity") +xlim(-20, 20) +
  ylim(-20, 20) +
  coord_fixed() +
  theme_void() +
  theme(legend.position = "none",
        legend.text = element_text(hjust = 0.5, size = 12, color = "white"),
        plot.subtitle = element_text(hjust = 0.5, size = 18, color = "black"),
        plot.background = element_rect(fill = "white", colour="white"),
        panel.background = element_rect(fill = "white", colour="white"),
        plot.margin = unit(c(0,0,0,0), "cm"))

数据可视化2

p2 <- ggplot() +
  geom_segment(data = Identity_edges,mapping = aes(x = x, y = y, xend = xend, yend = yend),
               colour = alpha("#26aa83",0.5), size = 0.05) +
  geom_point(data = plot_data,mapping = aes(x = x, y = y, colour = category),size = 1) +
  geom_text(data = plot_data,
            mapping = aes(x = labx, y = laby, label = name, angle = angle, colour = category),
            hjust = 0,size =4) +
  scale_colour_manual("", values = c("white","#884c94""#26aa83""#4a75b0","#ff3377")) +
  labs(subtitle = "Identity") +
  xlim(-20, 20) +
  ylim(-20, 20) +
  coord_fixed() +
  theme_void() +
  theme(legend.position = "none",
        plot.subtitle = element_text(hjust = 0.5, size = 18, color = "black"),
        plot.background = element_rect(fill = "white", colour="white"),
        panel.background = element_rect(fill = "white", colour="white"),
        plot.margin = unit(c(0,0,0,0), "cm"))

拼图

p1 + p2 +
  theme(
        plot.background = element_rect(fill = "white", colour="white"),
        panel.background = element_rect(fill = "white", colour="white"))

数据获取

本节的内容到此结束,可以看到细节还是蛮多的,喜欢的小伙伴欢迎转发此文档附上一句话到朋友圈「30分钟后台截图给我」,即可获取对应的数据及代码,如未及时回复可添加我的微信

欢迎大家扫描下方二位码加入「QQ交流群」,与全国各地上千位小伙伴交流

「关注下方公众号下回更新不迷路」,如需要加入微信交流群可添加小编微信,请备注单位+方向+姓名

往期推荐

手把手教你计算旁系同源基因ka/ks值

R进行三因素方差分析

使用rstatix优雅的进行统计分析

R优雅的进行多因素方差分析

ggplot2优雅的绘制旭日图

ggplot2绘制美美的花瓣图

ggplot2绘制美美的月亮图

手把手教你用OTU表绘制物种组成图

ggplot2绘制美美的棒棒糖图

一行代码优雅的结合饼图与甜甜圈图

MetBrewer一个让你爱不释手的调色板

ggtree优雅的绘制系统发育树(3)

ggtree优雅的绘制系统发育树(2)

ggtree优雅的绘制系统发育树(1)

ggplot2优雅的绘制分类条形图

ggplot2优雅的绘制径向条形图

ggplot2优雅的绘制配对箱

ggplot2优雅的绘制曲面条形图

ggplot2优雅的绘制哑铃图(增强版)

ggplot2优雅绘制小清新版箱线图


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存