【跟着SCI学绘图】| 图形复现 | 堆积柱状图

文摘   2024-07-10 22:53   甘肃  

本笔记为个人学习整理,仅供参考。主要参考内容在文末附有链接。如有侵权,请联系删除。

文章信息

Figure 1

期刊: Frontiers in Plant Science

日期: 21 June 2023

IF: 5.6(2022)

Doi: https://doi.org/10.3389/fpls.2023.1213807

作者: Weibin Ren et al.

图形复现

原文图形

Figure 2

复现图形

Figure 3

复现思路

  • 导入数据。数据可以通过R包导入csvxlsx文件
  • ggplot2绘图。

注意事项:

  1. 堆积时的顺序、x轴的标签顺序(非数值) 通过因子指定
  2. 含有数学公式的坐标轴标题使用expression()编辑

代码及注释

完整代码

rm(list = ls())

library(tidyverse)
library(RColorBrewer)
library(patchwork)

mycol <- brewer.pal(3"Paired")

p1_df_origin <- tribble(
  ~Dose, ~Heterozygous, ~Homozygous,
  259.534.15,
  5012.625.17,
  7517.708.47,
  10020.619.94,
  12516.858.33,
  15020.498.96
)

p1_df <- p1_df_origin %>% 
  pivot_longer(.,
               cols = c("Heterozygous""Homozygous"),
               names_to = "Total")

p1_df$Total <- factor(p1_df$Total, levels = c("Homozygous","Heterozygous"))

p1_df$Dose <- as.factor(p1_df$Dose)

p1 <- p1_df %>% 
  ggplot(., aes(x = Dose, y = value, fill = Total))+
  geom_bar(stat = "identity", position = "stack")+
  scale_y_continuous(limits = c(040), expand = c(00))+
  scale_fill_manual(values = mycol)+
  labs(title = "E",x = "Dose(Gy)" ,y = expression('No. of Mutations(*'10^2 *')'))+
  theme_classic()+
  theme(
    axis.text = element_text(size = 12, face = "bold"),
    axis.title = element_text(size = 15),
    axis.line = element_line(size = 1),
    axis.ticks.length = unit(.2, units = "cm"),
    axis.ticks = element_line(size = 1),
    legend.title = element_blank(),
    legend.text = element_text(size = 10, face = "bold"),
    plot.margin = unit(c(0.10.11.80.1), "cm"),
    legend.position = "bottom"
  )
  
print(p1)

ggsave("p1.jpg", width = 9, height = 4.4, dpi = 600)

注释

# 清空工作区
rm(list = ls())

# 加载所需的包
library(tidyverse)      # 包含 ggplot2 和 dplyr 等常用包
library(RColorBrewer)   # 提供颜色调色板
library(patchwork)      # 用于拼接多个图形

# 使用 RColorBrewer 提供的调色板创建一个包含 3 种颜色的向量
mycol <- brewer.pal(3"Paired")

# 创建原始数据框,包含剂量 (Dose) 和杂合子 (Heterozygous)、纯合子 (Homozygous) 的突变数量
p1_df_origin <- tribble(
  ~Dose, ~Heterozygous, ~Homozygous,
  259.534.15,
  5012.625.17,
  7517.708.47,
  10020.619.94,
  12516.858.33,
  15020.498.96
)

# 将数据框从宽格式转换为长格式,以便 ggplot2 使用
p1_df <- p1_df_origin %>% 
  pivot_longer(
    cols = c("Heterozygous""Homozygous"),  # 指定要转换的列
    names_to = "Total",                      # 新列的名称
    values_to = "value"                      # 新值列的名称
  )

# 将 Total 列转换为因子,并按指定顺序设置级别,以控制堆积顺序
p1_df$Total <- factor(p1_df$Total, levels = c("Homozygous""Heterozygous"))

# 将 Dose 列转换为因子,以确保 x 轴标签按顺序显示
p1_df$Dose <- as.factor(p1_df$Dose)

# 创建堆积条形图
p1 <- p1_df %>% 
  ggplot(aes(x = Dose, y = value, fill = Total)) +    # 设置美学映射
  geom_bar(stat = "identity", position = "stack") +   # 绘制堆积条形图
  scale_y_continuous(limits = c(040), expand = c(00)) +  # 设置 Y 轴范围和扩展
  scale_fill_manual(values = mycol) +                 # 使用自定义颜色
  labs(
    title = "E",                                      # 图表标题
    x = "Dose(Gy)",                                   # X 轴标签
    y = expression('No. of Mutations(*'10^2 *')')   # Y 轴标签,使用数学表达式
  ) +
  theme_classic() +                                   # 使用经典主题
  theme(
    axis.text = element_text(size = 12, face = "bold"),         # 设置轴文本样式
    axis.title = element_text(size = 15),                      # 设置轴标题样式
    axis.line = element_line(size = 1),                        # 设置轴线样式
    axis.ticks.length = unit(.2, units = "cm"),                # 设置轴刻度线长度
    axis.ticks = element_line(size = 1),                       # 设置轴刻度线样式
    legend.title = element_blank(),                            # 隐藏图例标题
    legend.text = element_text(size = 10, face = "bold"),      # 设置图例文本样式
    plot.margin = unit(c(0.10.11.80.1), "cm"),           # 设置图表边距
    legend.position = "bottom"                                 # 设置图例位置
  )

# 打印图形
print(p1)

# 保存图形为高分辨率 JPEG 文件
ggsave("p1.jpg", width = 9, height = 4.4, dpi = 600)

主要参考:

https://doi.org/10.3389/fpls.2023.1213807

本文为个人学习笔记,整理过程难免有误。如有错误,欢迎指正。仅供个人学习使用,如有侵权,请联系删除


可凡的学习笔记本
在读硕士生,R、Python爱好者
 最新文章