其他
R绘图练习 | 突出显示个别条形的重叠条形图
💡专注R语言在🩺生物医学中的使用
首先是加载R包和数据
library(tidyverse)
library(ggtext)
library(showtext)
showtext_auto()
load("E:/R/r-learning/r4ds/000files/df_animals_2.rdata")
主题设置
theme_set(theme_minimal(base_size = 19, base_family = "Girassol"))
theme_update(
text = element_text(color = "grey12"),
axis.title = element_blank(),
axis.text.x = element_text(family = "Iosevka Curly"),
axis.text.y = element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.minor = element_blank(),
plot.margin = margin(20, 5, 10, 10),
plot.subtitle = element_textbox_simple(family = "Roboto Condensed", size = 14,
lineheight = 1.6),
plot.title.position = "plot",
plot.caption = element_text(family = "Iosevka Curly", color = "#b40059", hjust = .5,
size = 10, margin = margin(35, 0, 0, 0))
)
画图
ggplot(df_animals_sum, aes(cal_year,n))+
# 第一层条形
geom_col(aes(fill= cal_year == 2020),
width = 0.8
)+
# 第2层条形
geom_col(data = df_animals_agg %>%
filter(animal_group_aggregated == "Cats" & cal_year < 2021),
aes(cal_year,n,alpha = cal_year == 2020),
width = 0.5,
fill = "white"
)+
# 第一层条形的标签
geom_text(data = df_animals_sum %>%
mutate(n_lab=ifelse(cal_year==2020,paste0(n,"\nrescues"),as.character(n))),
aes(label=n_lab),
nudge_y = 12,
vjust = 0,
lineheight = 0.8
)+
# 第二层条形的标签
geom_text(data = df_animals_agg %>% filter(animal_group_aggregated == "Cats" & cal_year < 2021) %>%
mutate(n_lab=ifelse(cal_year%in%c(2009,2020),paste0(n,"\ncats"),as.character(n))),
aes(label=n_lab),
color="white",
nudge_y = 12,
vjust = 0,
lineheight = 0.8
)+
# 底部坐标轴的标签
geom_text(aes(y=-15,label = cal_year,color=cal_year == 2020))+
# 各种颜色设置
scale_y_continuous(limits = c(-15, NA)) +
scale_color_manual(values = c("grey30", "#b40059"), guide = "none") +
scale_fill_manual(values = c("grey30", "#b40059"), guide = "none") +
scale_alpha_manual(values = c(0.3, 0.6), guide = "none") +
# css样式的标题
labs(title = "<b style='color:#b40059'>突出显示</b>个别条形的<b style='color:#4169E1'>重叠条形图</b>")+
# 主题细节调整
theme(plot.title = element_markdown(),
axis.text.x = element_blank()
)
本文用到了很多之前学过的R包和技巧:
本期数据可在QQ交流群中找到。
获取更多信息,欢迎加入🐧QQ交流群:613637742
“医学和生信笔记,专注R语言在临床医学中的使用、R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
往期回顾
使用gtExtra美化表格
净重新分类指数NRI计算
综合判别改善指数IDI的计算
R语言画连线排序图
分组、离断式坐标轴
二分类资料的DCA决策曲线分析