pythonic生物人

一步步实现19分sci同款!

使用R语言一步步实现IF 19.4 nature microbiology同款下图!

最终复现效果图,
最终实现效果图,
s41564-025-02077-6原图
s41564-025-02077-6原图

以下是详细步骤:

  • 🔸导入ggplot2等;从文件r_data/NM_pr.csv读入数据
# 导入ggplot2等包
library(ggplot2)
library(readxl)
library(tidyverse)

# 从CSV文件读入并赋值给NM_pr
NM_pr <- read_csv("r_data/NM_pr.csv")
Image

后续绘图,只用bacteria、fungi两列数据。

  • 🔸ggplot()准备画布
ggplot(NM_pr, aes(x=bacteria,  #x轴设置为变量bacteria
                  y=fungi #y轴设置为fungi变量
                 )
      ) 
Image
  • 🔸geom_point()设置几何对象层,即指定绘制散点图
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point() #指定绘制散点图
Image
  • 🔸点美化——设置点形状
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21#将点形状设置为空心圆,默认为实心点
            )
Image
  • 🔸点美化——设置点填充色
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, 
             fill = '#fe499a'#对点红色填充
            )
Image
  • 🔸点美化——设置点的大小
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', 
             size = 4# 设置点的大小
            )
Image
  • 🔸点美化——设置点的透明度
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, 
             alpha = 0.8#设置点的透明度
            )
Image
  • 🔸点美化——设置点的外圈粗细
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, 
             stroke = 0.3#设置点的外圈粗细
            )
Image
  • 🔸点美化——设置点的外圈颜色
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3,
             color = "black"#设置点的外圈颜色
            )
Image
  • 🔸设置图像大小、清晰度
options(repr.plot.width = 4, repr.plot.height = 3, repr.plot.res = 500) #设置图像大小、清晰度
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3, color = "black")
Image
  • 🔸设置回归线、置信区间
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3, color = "black") +
  geom_smooth(method=lm,  #通过线性模型(Linear Model)为散点添加一条线性回归线和其置信区间带
              size=0.3#回归线的粗细
             )
Image
  • 🔸设置回归线、置信区间——美化
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3, color = "black") +
  geom_smooth(method=lm, size=0.4, 
              colour="#a51672", #设置回归线的颜色
              fill = "#dedde6"#设置置信区间带的颜色
             )
Image
  • 🔸设置x、y轴标题
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3, color = "black") +
  geom_smooth(method=lm, size=0.4, colour="#a51672", fill = "#dedde6") +   
  ylab("Fungi Bray-Curtis Dissimilarity") +  #设置y轴标题
  xlab("Bacteria Bray-Curtis Dissimilarity")  #设置x轴标题
Image
  • 🔸添加相关系数、p值
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3, color = "black") +
  geom_smooth(method=lm, size=0.4, colour="#a51672", fill = "#dedde6") + 
  ylab("Fungi Bray-Curtis Dissimilarity") + 
  xlab("Bacteria Bray-Curtis Dissimilarity") + 
  annotate("text",                       # 添加文本注释
         size = 3,                      # 字体大小
         label = ~italic(p)~{"="}~"9.999e-05",  # 标签内容:p = 9.999e-05
         x = 0.75,                     # 文本在x轴的位置(坐标)
         y = 0.15)  + # # 文本在y轴的位置(坐标)
  annotate("text", size=3, label = ~italic(r)~{"="}~0.5618, x = 0.75, y = 0.08) #同理设置相关系数
Image
  • 🔸设置基础主题theme_classic
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3, color = "black") +
  geom_smooth(method=lm, size=0.4, colour="#a51672", fill = "#dedde6") + 
  ylab("Fungi Bray-Curtis Dissimilarity") + 
  xlab("Bacteria Bray-Curtis Dissimilarity") + 
  annotate("text", size=3, label = ~italic(p)~{"="}~"9.999e-05", x = 0.75, y = 0.15) +
  annotate("text", size=3, label = ~italic(r)~{"="}~0.5618, x = 0.75, y = 0.08) +
  theme_classic() #使用基础主题theme_classic:经典白底,有坐标轴线,无网格
Image
  • 🔸自定义修改主题
ggplot(NM_pr, aes(x=bacteria, y=fungi)) + 
  geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3, color = "black") +
  geom_smooth(method=lm, size=0.4, colour="#a51672", fill = "#dedde6") + 
  ylab("Fungi Bray-Curtis Dissimilarity") + 
  xlab("Bacteria Bray-Curtis Dissimilarity") + 
  annotate("text", size=3, label = ~italic(p)~{"="}~"9.999e-05", x = 0.75, y = 0.15) +
  annotate("text", size=3, label = ~italic(r)~{"="}~0.5618, x = 0.75, y = 0.08) +
  theme_classic() + 
  theme(                      # 开始自定义修改

# 1. Y轴刻度标签
    axis.text.y = element_text(
      angle = 0,              # 文本不旋转
      hjust = 0.5,           # 水平对齐:居中
      vjust = 0.5,           # 垂直对齐:居中
      size = 8,              # 字体大小:8号
      color = "black"# 字体颜色:黑色
    ),

# 2. X轴刻度标签
    axis.text.x = element_text(
      angle = 0,              # 文本不旋转
      hjust = 0.5,           # 水平对齐:居中
      vjust = 1,             # 垂直对齐:顶部对齐(相对于刻度线)
      size = 8,              # 字体大小:8号
      color = "black"# 字体颜色:黑色
    ),

# 3. Y轴标题
    axis.title.y = element_text(
      size = 8# 字体大小:8号
    ),

# 4. X轴标题
    axis.title.x = element_text(
      size = 8# 字体大小:8号
    ),

# 5. 面板背景
    panel.background = element_blank(),  # 空白背景(透明)

# 6-7. 网格线
    panel.grid.major = element_blank(),  # 移除主网格线
    panel.grid.minor = element_blank(),  # 移除次网格线

# 8. 坐标轴线
    axis.line = element_line(
      colour = "black",      # 轴线颜色:黑色
      size = 0.15# 轴线粗细:0.15
    ),

# 9. 坐标轴刻度线
    axis.ticks = element_line(
      colour = "black",      # 刻度线颜色:黑色
      size = 0.1# 刻度线粗细:0.1
    ),

# 10. 图例标题
    legend.title = element_blank(),  # 移除图例标题(不显示)

# 11. 图例键(色块/符号)大小
    legend.key.size = unit(0.3, "cm"),  # 尺寸:0.3厘米

# 12. 图例文本
    legend.text = element_text(
      size = 8# 字体大小:8号
    ),

# 13. 面板边框
    panel.border = element_rect(
      colour = "black",      # 边框颜色:黑色
      fill = NA,             # 填充:透明
      size = 0.4# 边框粗细:0.4
    ),

# 14. 绘图区域边距
    plot.margin = unit(
      c(0.1, 0.1, 0.1, 0.1),  # 上、右、下、左边距:各0.1厘米
"cm"# 单位:厘米
    ),

# 15. 图例外边距
    legend.margin = margin(
      c(0, 0, 0, 0)         # 上、右、下、左边距:0(无外边距)
    ),

# 16. 图形主标题
    plot.title = element_blank()  # 移除标题(不显示默认标题)

  ) 
Image

-更多精彩-

👉matplotlib教程:20w字+数百张图形+1W行代码+详细代码注释+学习交流群

图片

👉seaborn教程:12.3万字+500多张图形+8000行代码

图片

👉R可视化教程:39个章节+20w字+数百张图

图片
图片

加入学习~

图片