一步步实现19分sci同款!
使用R语言一步步实现IF 19.4 nature microbiology同款下图!
以下是详细步骤:
🔸导入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")
后续绘图,只用bacteria、fungi两列数据。
🔸ggplot()准备画布
ggplot(NM_pr, aes(x=bacteria, #x轴设置为变量bacteria
y=fungi #y轴设置为fungi变量
)
)
🔸geom_point()设置几何对象层,即指定绘制散点图
ggplot(NM_pr, aes(x=bacteria, y=fungi)) +
geom_point() #指定绘制散点图
🔸点美化——设置点形状
ggplot(NM_pr, aes(x=bacteria, y=fungi)) +
geom_point(shape = 21#将点形状设置为空心圆,默认为实心点
)
🔸点美化——设置点填充色
ggplot(NM_pr, aes(x=bacteria, y=fungi)) +
geom_point(shape = 21,
fill = '#fe499a'#对点红色填充
)
🔸点美化——设置点的大小
ggplot(NM_pr, aes(x=bacteria, y=fungi)) +
geom_point(shape = 21, fill = '#fe499a',
size = 4# 设置点的大小
)
🔸点美化——设置点的透明度
ggplot(NM_pr, aes(x=bacteria, y=fungi)) +
geom_point(shape = 21, fill = '#fe499a', size = 4,
alpha = 0.8#设置点的透明度
)
🔸点美化——设置点的外圈粗细
ggplot(NM_pr, aes(x=bacteria, y=fungi)) +
geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8,
stroke = 0.3#设置点的外圈粗细
)
🔸点美化——设置点的外圈颜色
ggplot(NM_pr, aes(x=bacteria, y=fungi)) +
geom_point(shape = 21, fill = '#fe499a', size = 4, alpha = 0.8, stroke = 0.3,
color = "black"#设置点的外圈颜色
)
🔸设置图像大小、清晰度
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")
🔸设置回归线、置信区间
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#回归线的粗细
)
🔸设置回归线、置信区间——美化
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"#设置置信区间带的颜色
)
🔸设置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轴标题
🔸添加相关系数、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) #同理设置相关系数
🔸设置基础主题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:经典白底,有坐标轴线,无网格
🔸自定义修改主题
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() # 移除标题(不显示默认标题)
)
-更多精彩-
👉matplotlib教程:20w字+数百张图形+1W行代码+详细代码注释+学习交流群
👉seaborn教程:12.3万字+500多张图形+8000行代码
加入学习~