前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2优雅的绘制车轱辘图

ggplot2优雅的绘制车轱辘图

作者头像
R语言数据分析指南
发布2022-09-21 14:32:00
2280
发布2022-09-21 14:32:00
举报
文章被收录于专栏:R语言数据分析指南

❝之前在一篇论文里面看到一张特殊的组合饼图感觉很不错,下面来构建数据进行复现,来看具体案例❞

加载R包

代码语言:javascript
复制
library(tidyverse)
library(scales)
library(ggtext)
library(patchwork)
library(cowplot)
library(RColorBrewer)

定义颜色

代码语言:javascript
复制
mycolors <- colorRampPalette(brewer.pal(12,"Paired"))(21)

构建数据集

代码语言:javascript
复制
df <- tribble(~group,~value,
        "A", 40,
        "B",60)

Figure-1

代码语言:javascript
复制
p1 <- df %>% arrange(desc(value)) %>% 
  ggplot(.,aes(x="",y=value,fill=group))+
  geom_bar(width=1,stat="identity")+
  coord_polar("y",start=0)+
  geom_text(aes(y = value/2 + c(0, cumsum(value)[-length(value)]), 
                label = percent(value/100)), size=4)+
  scale_fill_manual(values = mycolors)+
  theme(axis.text.x=element_blank(),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        panel.border = element_blank(),
        panel.grid=element_blank(),
        axis.ticks = element_blank(),
        panel.background = element_blank(),
        legend.position = "none",
        legend.title = element_blank(),
        legend.text = element_text(color="black",size=9), 
        legend.spacing.x=unit(0.1,'cm'),
        legend.key.width=unit(0.5,'cm'),
        legend.key.height=unit(0.5,'cm'), 
        legend.background=element_blank())

数据清洗

代码语言:javascript
复制
df2 <- read_tsv("otu_taxa_table.xls") %>% 
  select(OTU:C5,taxonomy) %>% 
  separate(taxonomy,
           into=c("domain","phylum","class","order","family","genus","species"),sep=";") %>% 
  mutate_at(vars(c(`domain`:`species`)),~str_split(.,"__",simplify=TRUE)[,2]) %>% 
  select(A1:C5,genus) %>% drop_na() %>% 
  group_by(genus) %>%  filter(genus !="") %>%  
  count() %>% ungroup() %>% mutate(value=n/sum(n)) %>% arrange(desc(value)) %>%
  mutate(group=case_when(value <  0.0088999644 ~ "others",
                         TRUE ~ as.character(genus))) %>% 
  group_by(group) %>% summarise(value=sum(value)) %>% arrange(desc(value))

df2$group <- factor(df2$group,levels = df2$group)

Figure-2

代码语言:javascript
复制
p2 <- df2 %>% ggplot(.,aes(x="",y=value,fill=group))+
  geom_bar(width=1,stat="identity")+
  coord_polar("y",start=0)+
  scale_fill_manual(values = mycolors)+
  theme(axis.text.x=element_blank(),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        panel.border = element_blank(),
        panel.grid=element_blank(),
        axis.ticks = element_blank(),
        panel.background = element_blank(),
        legend.position = "none",
        legend.title = element_blank(),
        plot.margin=unit(c(0,13,0,0),units="cm"),
        legend.text = element_text(color="black",size=9), 
        legend.spacing.x=unit(0.1,'cm'),
        legend.key.width=unit(0.5,'cm'),
        legend.key.height=unit(0.5,'cm'), 
        legend.background=element_blank())

拼图

代码语言:javascript
复制
p2 %>% ggdraw()+draw_plot(p1,scale=0.4,x=0.38,y=0)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 加载R包
  • 定义颜色
  • 构建数据集
  • Figure-1
  • 数据清洗
  • Figure-2
  • 拼图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档