查看原文
其他

R绘图练习 | 突出显示个别条形的重叠条形图

阿越就是我 医学和生信笔记 2023-06-15
关注公众号,发送R语言python,可获取资料

💡专注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(2051010),
  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(35000))
)

画图

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(-15NA)) +
  scale_color_manual(values = c("grey30""#b40059"), guide = "none") +
  scale_fill_manual(values = c("grey30""#b40059"), guide = "none") +
  scale_alpha_manual(values = c(0.30.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包和技巧:

ggplot2修改坐标轴详细介绍

超详细教程:修改ggplot2图例

让你的ggplot2主题支持markdown和css

让你的ggplot2支持markdown语法

               

本期数据可在QQ交流群中找到。



获取更多信息,欢迎加入🐧QQ交流群:613637742


医学和生信笔记,专注R语言在临床医学中的使用、R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。


往期回顾




使用gtExtra美化表格


净重新分类指数NRI计算


综合判别改善指数IDI的计算


R语言画连线排序图


分组、离断式坐标轴


二分类资料的DCA决策曲线分析


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存