我正在尝试整合文件列的多个绘图,其中每个文件都有两个堆栈栏绘图,并且绘图很容易混淆而不会将它们包装到一个网格中。不过,我打算改进此图的结果,为整个图添加常见的图例和标签。我尝试了几次,以更清晰的方式为每个文件集成多个绘图,因此将它们放到一个文件栏的网格中可能会更加优雅,易于理解输出。我对SO
的几个类似帖子的回答感到困惑,我用ggplot2
进行了一些新的回应,最后我无法制作出我想要的情节。任何可以给我可能的想法,以更好的方式改善目前的情节?我如何为多个图形添加通用标签和图例?请任何想法吗?如何将常见标签和图例的文件栏的多个独特情节整合起来?
重复性data.frame:
Qualified <- list(
hotan = data.frame(begin=c(7,13,19,25,31,37,43,49,55,67,79,103,31,49,55,67),
end= c(10,16,22,28,34,40,46,52,58,70,82,106,34,52,58,70),
pos.score=c(11,19,8,2,6,14,25,10,23,28,15,17,6,10,23,28)),
aksu = data.frame(begin=c(12,21,30,39,48,57,66,84,111,30,48,66,84),
end= c(15,24,33,42,51,60,69,87,114,33,51,69,87),
pos.score=c(5,11,15,23,9,13,2,10,16,15,9,2,10)),
korla = data.frame(begin=c(6,14,22,30,38,46,54,62,70,78,6,30,46,70),
end=c(11,19,27,35,43,51,59,67,75,83,11,35,51,75),
pos.score=c(9,16,12,3,20,7,11,13,14,17,9,3,7,14))
)
unQualified <- list(
hotan = data.frame(begin=c(21,33,57,69,81,117,129,177,225,249,333,345,33,81,333),
end= c(26,38,62,74,86,122,134,182,230,254,338,350,38,86,338),
pos.score=c(7,34,29,14,23,20,11,30,19,17,6,4,34,23,6)),
aksu = data.frame(begin=c(13,23,33,43,53,63,73,93,113,123,143,153,183,33,63,143),
end= c(19,29,39,49,59,69,79,99,119,129,149,159,189,39,69,149),
pos.score=c(5,13,32,28,9,11,22,12,23,3,6,8,16,32,11,6)),
korla = data.frame(begin=c(23,34,45,56,67,78,89,122,133,144,166,188,56,89,144),
end=c(31,42,53,64,75,86,97,130,141,152,174,196,64,97,152),
pos.score=c(3,10,19,17,21,8,18,14,4,9,12,22,17,18,9))
)
我categorzing数据,并以这种方式得到多个图(mainly influenced by @Jake Kaupp's idea
):
multi_plot <- function(x) {
p1 <- ggplot(x, aes(x = group)) +
geom_bar(aes(fill = elm), color = "black")
p2 <- ggplot(distinct(x), aes(x = elm)) +
geom_bar(aes(fill = group), color = "black")
arrangeGrob(p1, p2,nrow = 1, top = unique(x$list))
}
singleDF <-
bind_rows(c(Qualified = Qualified, Unqualified = unQualified), .id = "id") %>%
tidyr::separate(id, c("group", "list")) %>%
mutate(elm = ifelse(pos.score >= 10, "valid", "invalid")) %>%
arrange(list, group, desc(elm))
plot_data <- singleDF %>%
split(.$list) %>%
map(~split_plot(.x))
grid.arrange(grobs = plot_data, nrow = 1)
我想多情节与常见的文件栏整合标签和常见的传奇位置。在常用图例方面,我打算拨打X
轴为sample
,Y
轴为observation
;在常见的传奇位置方面,我打算在情节的右侧(只有四个常见的传奇)表示传奇。
编辑:
在我需要的输出情节的group
和elm
堆栈柱状图中必须放在一个单独的网格文件吧。对于整个图表,追求共同的标签和传奇是需要的。
我怎样才能达到我想要的输出?原始实施需要做些什么改变?对不起,这个简单的问题在SO
。在此先感谢
“文件栏一个单一的网格” - >我不明白你说“文件”在这里是什么意思。 – Axeman
@Axeman在前一篇文章中,我基于你和Jake Kaupp的想法继续这篇文章,提出了根据条件生成多个绘图的解决方案。这个解决方案是否与之前的解决方案一致感谢您的青睐:) – Dan
我提出了两个独立的图,因为您基本上是在x轴上绘制了两个不同的变量。我不喜欢在一个情节中这样做。我认为这很混乱。但是既然你似乎坚持,我现在提供了一种将所有东西都绘制成一幅情节的方法。是的,结果是一样的。 – Axeman