Nature biotechnology图表VS你的图表,差别可能就藏在这几条“pattern fills”里!
本次使用R复现Nature biotechnology的底纹图。
底纹图,直观区分分组数据,当分组数据比较,对颜色选择有困难症时,非常好用。
读入数据
绘图
使用R语言一步步复现一下上图Nature biotechnology类似图。
✅默认分组图,
ggplot() +
# 柱状图
geom_col(data = stats,
aes(x = age_group, y = mean, fill = sex),
width = 0.5,
color = "black", alpha = 0.7, size = 0.5,
position = position_dodge(0.6)) +
# 误差棒
geom_errorbar(data = stats,
aes(x = age_group, ymin = mean - sem, ymax = mean + sem, group = sex),
width = 0.1, size = 0.9,
position = position_dodge(0.6)) +
# 散点
geom_point(data = break_data,
aes(x = age_group, y = value, fill = sex),
pch = 21, size = 2, alpha = 0.6, stroke = 1,
position = position_jitterdodge(jitter.width = 0.1,
dodge.width = 0.5)) + guides(fill = "none") +
# 设置分组
scale_fill_manual(values = c(male = "#6baed6", female = "#ff9999")) +
labs(x = "age (weeks)", y = NULL, fill = "Sex")
这是一个bar plot + 误差棒 + 抖动散点图 + 颜色分组。
当两组数据颜色选的不合适时,上图往往出现辨识度不高的问题,下面我们给他加上底纹。
✅底纹图
ggplot() +
# 带图案的柱状图
geom_col_pattern(
data = stats,
aes(x = age_group, y = mean, pattern = sex, fill = sex), # 同时映射fill和 pattern
width = 0.5,
pattern_angle = 45,
pattern_density = 0.2,
pattern_spacing = 0.06,
pattern_key_scale = 0.4,
color = "black",
alpha = 0.7,
size = 0.5,
position = position_dodge(0.6)
) +
scale_pattern_manual(
values = c("male" = "stripe", "female" = "circle"), # 设置底纹
guide = guide_legend(override.aes = list(fill = c("#6baed6", "#ff9999")))
) +
scale_fill_manual(values = c("male" = "#6baed6", "female" = "#ff9999"))+
# 误差棒
geom_errorbar(
data = stats,
aes(x = age_group, ymin = mean - sem, ymax = mean + sem, group = sex),
width = 0.15, size = 0.9, position = position_dodge(0.5)
) +
# 散点图
geom_point(
data = break_data,
aes(x = age_group, y = value, fill = sex),
pch = 21, size = 2, alpha = 0.6, stroke = 1,
position = position_jitterdodge(jitter.width = 0.1, dodge.width = 0.5)
)
好了,bar plot + 误差棒 + 抖动散点图 + 颜色分组 + 底纹分组。
也可以设置底纹渐变模式,
ggplot() +
geom_col_pattern(
data = stats,
aes(
x = age_group, y = mean,
pattern_fill = sex, # 映射给渐变主色
pattern_fill2 = sex # 映射给渐变次色
),
pattern = "gradient", # 设置底纹渐变模式
pattern_orientation = "vertical", # 渐变方向:垂直
width = 0.5,
color = "black",
size = 0.5,
position = position_dodge(0.6)
)
ggplot() +
geom_col_pattern(
data = stats,
aes(
x = age_group, y = mean,
pattern_fill = sex, # 映射给渐变主色
pattern_fill2 = sex # 映射给渐变次色
),
pattern = "plasma", # 渐变模式
pattern_orientation = "vertical", # 渐变方向:垂直
width = 0.5,
color = "black",
size = 0.5,
position = position_dodge(0.6)
)
其它模式,
本期结束!
获取绘图代码+测试数据+数据处理方法+依赖包安装方法,
(备注:299)
-推荐阅读-