KEGG通路图绘制 | ggpathway包

「一边学习,一边总结,一边分享!」

写在前面

今天在GitHub中看到一个ggpathway的包,主要可以制作通路网络图,或是进一步优化的话,可以进行个性话制作。 操作步骤在GitHub中已经很详细。自己也照葫芦画瓢进行运行一下。

GitHub网址:https://github.com/cxli233/ggpathway
**「获得本教程代码链接:」**任意赞赏即可获得

绘图

1, 导入所需R包

library(tidyverse)
library(igraph)
library(ggraph)

library(readxl)

library(viridis)
library(RColorBrewer)
#BiocManager::install("rcartocolor")
library(rcartocolor)

exaple one

  1. 创建数据

    Edge table

    example1_edge_table <- tribble(
    ~from, ~to, ~label,
    "Glc6P", "6P-gluconolactone", "Glc6PHD",
    "6P-gluconolactone", "6P-glucoconate", "6P-gluconolactonase",
    "6P-glucoconate", "Ru5P", "6P-gluconateDH"
    )

    head(example1_edge_table)

    A tibble: 3 × 3

    from to label
    <chr> <chr> <chr>
    1 Glc6P 6P-gluconolactone Glc6PHD
    2 6P-gluconolactone 6P-glucoconate 6P-gluconolactonase
    3 6P-glucoconate Ru5P 6P-gluconateDH

    Node table

    example1_nodes_table <- tribble(
    ~name, ~x, ~y,
    "Glc6P", 1, 0,
    "6P-gluconolactone", 2, 0,
    "6P-glucoconate", 3, 0,
    "Ru5P", 4, 0
    )

Make network object and graph

## Make network object and graph
example1_network <- graph_from_data_frame(
  d = example1_edge_table,
  vertices = example1_nodes_table,
  directed = T
)

head(example1_nodes_table)

> head(example1_nodes_table)
# A tibble: 4 × 3
  name                  x     y
  <chr>             <dbl> <dbl>
1 Glc6P                 1     0
2 6P-gluconolactone     2     0
3 6P-glucoconate        3     0
4 Ru5P                  4     0

绘图

ggraph(example1_network, layout = "manual", 
       x = x, y = y) +
  geom_node_text(aes(label = name), hjust = 0.5) +
  geom_edge_link(aes(label = example1_edge_table$label), 
                 angle_calc = 'along',
                 label_dodge = unit(2, 'lines'),
                 arrow = arrow(length = unit(0.5, 'lines')), 
                 start_cap = circle(4, 'lines'),
                 end_cap = circle(4, 'lines')) +
  theme_void()  

ggsave("../Results/Pentose_1.svg", height = 2, width = 6.5, bg = "white")
ggsave("../Results/Pentose_1.png", height = 2, width = 6.5, bg = "white")

Example 2: more complex pathway

  1. 导入所需数据

    setwd("E:\小杜的生信筆記\2023\20231022_ggpathway")
    ##'@input data
    example2_edges <- read_excel("Data/OPPP_edges.xlsx")
    example2_nodes <- read_excel("Data/OPPP_nodes.xlsx")

    head(example2_edges)

    A tibble: 6 × 3

    from to label
    <chr> <chr> <chr>
    1 Glc6P 6P-gluconolactone Glc6PHD
    2 6P-gluconolactone 6P-glucoconate 6P-gluconolactonase
    3 6P-glucoconate Ru5P 6P-gluconateDH
    4 Ru5P R5P R5P isomerase
    5 Ru5P Xu5P_1 R5P epimerase
    6 Xu5P_1 R5P T

    head(example2_nodes)

    A tibble: 6 × 5

    name x y carbons label
    <chr> <dbl> <dbl> <dbl> <chr>
    1 Glc6P 0 0 6 Glc6P
    2 6P-gluconolactone 0 -1 6 6P-gluconolactone
    3 6P-glucoconate 0 -2 6 6P-glucoconate
    4 Ru5P 0 -3 5 Ru5P
    5 R5P -0.5 -4 5 R5P
    6 Xu5P_1 0 -4 5 Xu5P

  2. 计算 nodes

    example2_nodes <- example2_nodes %>%
    mutate(label = str_remove(name, "_\d"))

    head(example2_nodes)

    A tibble: 6 × 5

    name x y carbons label
    <chr> <dbl> <dbl> <dbl> <chr>
    1 Glc6P 0 0 6 Glc6P
    2 6P-gluconolactone 0 -1 6 6P-gluconolactone
    3 6P-glucoconate 0 -2 6 6P-glucoconate
    4 Ru5P 0 -3 5 Ru5P
    5 R5P -0.5 -4 5 R5P
    6 Xu5P_1 0 -4 5 Xu5P

    example2_network <- graph_from_data_frame(
    d = example2_edges,
    vertices = example2_nodes,
    directed = T
    )

  3. 绘图

    ggraph(example2_network, layout = "kk") +
    geom_node_point(size = 3, aes(fill = as.factor(carbons)),
    alpha = 0.8, shape = 21, color = "grey20") +
    geom_node_text(aes(label = label), hjust = 0.5, repel = T) +
    geom_edge_link(#aes(label = example2_edges$label),
    #angle_calc = 'along',
    label_dodge = unit(2, 'lines'),
    arrow = arrow(length = unit(0.4, 'lines')),
    start_cap = circle(1, 'lines'),
    end_cap = circle(2, 'lines')) +
    scale_fill_manual(values = carto_pal(7, "Vivid")) +
    labs(fill = "Carbons") +
    theme_void()

    ggsave("Results/Pentose_2.svg", height = 5, width = 4, bg = "white")
    ggsave("Results/Pentose_2.png", height = 5, width = 4, bg = "white")

Example 3: circular pathway

  1. 导入数据和数据转换

    example3_edges <- read_excel("Data/TCA_cycle_edges.xlsx")
    example3_nodes <- read_excel("Data/TCA_cycle_nodes.xlsx")

    head(example3_edges)
    head(example3_nodes)

    example3_nodes <- example3_nodes %>%
    mutate(label = str_remove(name, "_\d"))

    head(example3_nodes)

    example3_network <- graph_from_data_frame(
    d = example3_edges,
    vertices = example3_nodes,
    directed = T
    )

  2. 绘图

    ggraph(example3_network, layout = "manual",
    x = x, y = y) +
    geom_node_point(size = 3, aes(fill = as.factor(carbons)),
    alpha = 0.8, shape = 21, color = "grey20") +
    geom_edge_link(arrow = arrow(length = unit(0.4, 'lines')),
    start_cap = circle(0.5, 'lines'),
    end_cap = circle(0.5, 'lines'),
    width = 1.1, alpha = 0.5) +
    geom_node_text(aes(label = label), hjust = 0.5, repel = T) +
    annotate(geom = "text", label = "TCA Cycle",
    x = 0, y = 0, size = 5, fontface = "bold") +
    scale_fill_manual(values = carto_pal(7, "Vivid")) +
    labs(fill = "Carbons") +
    theme_void() +
    coord_fixed()

Subsetting pathway

  1. 数据和计算转换

    example3_nodes_trim <- example3_nodes %>%
    filter(carbons != "cofactor")

    example3_edges_trim <- example3_edges %>%
    filter(from %in% example3_nodes_trimname & to %in% example3_nodes_trimname)

    example3_network_trim <- graph_from_data_frame(
    d = example3_edges_trim,
    vertices = example3_nodes_trim,
    directed = T
    )

绘图

ggraph(example3_network_trim, layout = "manual",
       x = x, y = y) +
  geom_node_point(size = 3, aes(fill = as.factor(carbons)), 
                  alpha = 0.8, shape = 21, color = "grey20") +
  geom_edge_link(arrow = arrow(length = unit(0.4, 'lines')), 
                 start_cap = circle(0.5, 'lines'),
                 end_cap = circle(1, 'lines'), 
                 width = 1.1, alpha = 0.5) +
  geom_node_text(aes(label = label), hjust = 0.5, repel = T) +
  annotate(geom = "text", label = "TCA Cycle", 
           x = 0, y = 0, size = 5, fontface = "bold") +
  scale_fill_manual(values = carto_pal(7, "Vivid")) +
  labs(fill = "Carbons") +
  theme_void() +
  coord_fixed()

ggsave("Results/TCA_2.svg", height = 4, width = 5, bg = "white")
ggsave("Results/TCA_2.png", height = 4, width = 5, bg = "white")

「往期文章:」

「1. 复现SCI文章系列专栏

「2. 《生信知识库订阅须知》,同步更新,易于搜索与管理。」

「3. 最全WGCNA教程(替换数据即可出全部结果与图形)」


「4. 精美图形绘制教程」

「5. 转录组分析教程」

转录组上游分析教程[零基础]

「小杜的生信筆記」 ,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

本文由mdnice多平台发布

相关推荐
海绵波波1072 小时前
flask后端开发(10):问答平台项目结构搭建
后端·python·flask
网络风云3 小时前
【魅力golang】之-反射
开发语言·后端·golang
Q_19284999063 小时前
基于Spring Boot的电影售票系统
java·spring boot·后端
运维&陈同学5 小时前
【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍
运维·后端·elk·elasticsearch·云原生·自动化·kibana·日志收集
Javatutouhouduan7 小时前
如何系统全面地自学Java语言?
java·后端·程序员·编程·架构师·自学·java八股文
后端转全栈_小伵7 小时前
MySQL外键类型与应用场景总结:优缺点一目了然
数据库·后端·sql·mysql·学习方法
编码浪子8 小时前
Springboot高并发乐观锁
后端·restful
uccs8 小时前
go 第三方库源码解读---go-errorlint
后端·go
Mr.朱鹏9 小时前
操作002:HelloWorld
java·后端·spring·rabbitmq·maven·intellij-idea·java-rabbitmq
编程洪同学10 小时前
Spring Boot 中实现自定义注解记录接口日志功能
android·java·spring boot·后端