ggplot2中给图形添加注释的一种新思路

科技   2024-10-09 21:47   陕西  

欢迎关注R语言数据分析指南

今天在交流群内看到有朋友询问这样一个问题,很常见的一个堆砌条图并额外添加了一些注释。那么使用ggplot2绘制此类图的常规方法,正如群友所说为分开绘图最终拼图而成。那么有没有不通过拼图而通过对轴刻度及其它细节的调整来实现此图呢?当然有啦,同时此类绘图思路在后续的个性化图中也许会有其它用处。下面小编就通过一个案例来进行介绍,数据为随意构建无实际意义,整个过程仅供参考。数据稍后会上传到交流群内,购买过小编绘图文档的朋友可在所加的交流群内获取下载,有需要的朋友可关注文末介绍购买小编的R绘图文档。购买前请咨询,零基础不要买。

问题

思路介绍

常规思路为拼图这很直观,而若不进行拼图则需要调整Y轴,此时应该想到一个关键R包ggh4x,由于该包内容非常丰富,而我们需要用到的函数通常情况下很少有人关注,所以此步骤为难点。调整完Y轴后则直接使用geom_point绘制方块,而文本则直接通过annotate()函数添加。整个过程思路清晰,最终得到的结果图有一种浑然天成的感觉。

结果图

代码过程

library(tidyverse)
library(ggh4x)
library(MetBrewer)

df <- read_tsv("bar.tsv")
anno <- read_tsv("annotate.tsv")

top_positions <- df %>% group_by(age) %>% summarise(top = sum(val))

ggplot() +
  geom_col(data=df,aes(x = age, y = val,fill=rei),width=0.8)+
  geom_text(data=top_positions,aes(age,top,label =age),color="black",
            angle=90,vjust=0.5,,hjust=-0.1,,size=9,size.unit = "pt")+
  scale_y_continuous(expand = c(0,0),
                     limits = c(-0.8,3),
                     breaks =c(0,0.5,1,1.5,2,2.5,3),
                     labels=c(0,0.5,1,1.5,2,2.5,3),
                     guide = "axis_truncated")+
  geom_point(data=anno %>% select(1,2) %>% 
               filter(Bacteria =="Adonis p<0.05"),aes(age,y=-0.2,color=Bacteria),inherit.aes = F,pch=15,size=7)+
  geom_point(data=anno %>% select(1,3) %>% 
               filter(Pathway =="Adonis p<0.05"),aes(age,y=-0.4,color=Pathway),inherit.aes = F,pch=15,size=7)+
  geom_point(data=anno %>% select(1,4) %>% 
               filter(ARG =="Adonis p<0.05"),aes(age,y=-0.6,color=ARG),inherit.aes = F,pch=15,size=7)+
  scale_fill_manual(values=met.brewer("VanGogh2"))+
  scale_color_manual(values = c("#7294D4"))+
  annotate(geom="text",x=I(18),y=I(0.16),label="Bacteria",size=9,size.unit="pt",color="black")+
  annotate(geom="text",x=I(18),y=I(0.1),label="Pathway",size=9,size.unit="pt",color="black")+
  annotate(geom="text",x=I(18),y=I(0.05),label="ARG",size=9,size.unit="pt",color="black")+
  coord_cartesian(clip = "off") +  
  geom_hline(yintercept = 0, color = "black") + 
  guides(color=guide_legend(theme = theme(legend.title = element_blank())))+
  theme(axis.line.x = element_blank(),
        axis.line.y=element_line(color="black"),
        panel.background = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.x=element_blank(),
        axis.text.y=element_text(size=10,color="black"),
        axis.title = element_blank())

关注下方公众号下回更新不迷路

购买介绍

本节介绍到此结束,有需要学习R数据可视化的朋友欢迎到淘宝店铺:R语言数据分析指南,购买小编的R语言可视化文档(2024版),购买将赠送2023年的绘图文档内容。目前此文档(2023+2024)已经更新上传200案例文档,每个案例都附有相应的数据和代码,2024并配有对应的注释文档,方便大家学习和参考。

2024更新的绘图内容将同时包含数据+代码+注释文档+文档清单,2023无目录仅有数据文件夹,小编只分享案例文档,不额外回答问题,无答疑服务,零基础不推荐买。

案例特点

所选案例图均属于个性化分析图表完全适用于论文发表,内容异常丰富两年累计发布案例图200+,2024年6月起提供html版注释文档更加直观易学。文档累计上千人次购买拥有良好的社群交流体验。R代码结构清晰易懂,为防止中文乱码提供单独的注释文档

群友精彩评论

淘宝店铺

2024年已更新案例图展示


R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
 最新文章