前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R绘图练习 | 突出显示个别条形的重叠条形图

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

作者头像
医学和生信笔记
发布2022-11-15 10:13:21
1.2K0
发布2022-11-15 10:13:21
举报
文章被收录于专栏:医学和生信笔记

💡专注R语言在🩺生物医学中的使用

首先是加载R包和数据

代码语言:javascript
复制
library(tidyverse)
library(ggtext)
library(showtext)
showtext_auto()

load("E:/R/r-learning/r4ds/000files/df_animals_2.rdata")

主题设置

代码语言:javascript
复制
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))
)

画图

代码语言:javascript
复制
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包和技巧:

ggplot2修改坐标轴详细介绍

超详细教程:修改ggplot2图例

让你的ggplot2主题支持markdown和css

让你的ggplot2支持markdown语法

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 医学和生信笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档