合并堆叠和分组图表ggplot2 [英] Combine Stacked and Grouped chart ggplot2

查看:137
本文介绍了合并堆叠和分组图表ggplot2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这张桌子:

Number  Type    Correction  Adjust  Origin
1061    60-15   Corrected   yes     Small RNA-seq
204     60-15   Corrected   no      Small RNA-seq
0       60-15   Native      yes     Small RNA-seq
540     60-15   Native      no      Small RNA-seq
0       60-30   Corrected   yes     Small RNA-seq
315     60-30   Corrected   no      Small RNA-seq
0       60-30   Native      yes     Small RNA-seq
58      60-30   Native      no      Small RNA-seq
0       70-15   Corrected   yes     Small RNA-seq
200     70-15   Corrected   no      Small RNA-seq
0       70-15   Native      yes     Small RNA-seq
61      70-15   Native      no      Small RNA-seq
0       70-30   Corrected   yes     Small RNA-seq
259     70-30   Corrected   no      Small RNA-seq
0       70-30   Native      yes     Small RNA-seq
42      70-30   Native      no      Small RNA-seq
0       80-15   Corrected   yes     Small RNA-seq
166     80-15   Corrected   no      Small RNA-seq
0       80-15   Native      yes     Small RNA-seq
76      80-15   Native      no      Small RNA-seq
0       80-30   Corrected   yes     Small RNA-seq
182     80-30   Corrected   no      Small RNA-seq
0       80-30   Native      yes     Small RNA-seq
13      80-30   Native      no      Small RNA-seq

我在ggplot2中生成了以下图,这几乎是我想要的:

And I have generated the following plot in ggplot2, which is nearly what I want:

ggplot(Table, aes(fill=Correction, x=Type, y=Number)) +
       geom_bar(position="dodge", stat="identity") +
       scale_fill_brewer(palette = "Set1") + labs(x="", y="") + 
       theme(legend.title=element_blank()) + facet_wrap(~Origin)

哪个会生成如下图:

问题是我希望将60-15的第一个小节一分为二(1061和204),就好像它是堆叠的条形图一样.其余的条没有这种特殊性,将保持不变.我试图通过添加具有零Number值的行来解决此问题,但是我找不到合适的代码来解决此问题.

The problem is that I want the first bar of 60-15 to be splitted in two (1061 and 204) as if it was a stacked barchart. The remaining bars do not have this particularity and would remain the same as they are. I made an attempt to solve this by adding the rows with zero Number values, but I could not discover the proper code to solve this.

有人可以帮忙吗?

谢谢

推荐答案

您可以尝试先计算总和.然后使用 geom_rect

You can try to calculate the sums before. Then add missing bar parts by your own using geom_rect

library(tidyverse)
df %>% 
  group_by(Type, Correction) %>% 
   summarise(count=sum(Number))
# A tibble: 12 x 3
# Groups:   Type [6]
Type  Correction count
<fct> <fct>      <int>
1 60-15 Corrected   1265
2 60-15 Native       540
3 60-30 Corrected    315
4 60-30 Native        58
5 70-15 Corrected    200
6 70-15 Native        61
7 70-30 Corrected    259
8 70-30 Native        42
9 80-15 Corrected    166
10 80-15 Native        76
11 80-30 Corrected    182
12 80-30 Native        13

df %>% 
  group_by(Type, Correction) %>% 
  summarise(count=sum(Number)) %>% 
  mutate(Correction=factor(Correction, levels = c(levels(Correction), "new_level"))) %>%  
  ggplot(aes(Type, count, fill=Correction)) + 
   geom_col(position = "dodge") +
   geom_rect(aes(xmin=.55, xmax=1, ymin=1061, ymax=1061+204), fill="#619CFF") + 
   scale_fill_discrete(drop=FALSE)

这篇关于合并堆叠和分组图表ggplot2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆