问题描述
我有这张桌子:
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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!