并排的条形图,颜色方案一致

时间:2016-06-29 20:11:31

标签: r ggplot2

我使用来自不同数据框的共享公共变量的数据,在多个条形图中使用了一致的colour scheme。这种方法基于对this question的回答。在每种情况下,我都在看一个变量。

我现在要做的是在同一个图上查看两个变量,保持颜色方案一致。除了A的两个小条应该是相同的颜色(调色板中的第一个),B的两个小条应该是相同的颜色(调色板中的第二个小节)之外,它应该类似于以下内容)等 enter image description here

示例数据:

mydata <- data.frame( "Channel" = LETTERS[1:11], 
                  "V1" = seq(1100, 100, -100), 
                  "V2"= seq(110, 10, -10) )

以及上图的代码:

barplot(t(mydata[,2:3]), beside=T, 
    col=brewer.pal(11, "RdGy"), 
    names.arg=LETTERS[1:11])

我一直试图在ggplot中做到这一点(这是我的偏好)但是没有成功。我已经使用了包reshape2melt数据,然后使用fill,但这只能让我获得两种颜色。我也试过以各种方式使用position='dodge'而没有运气。我可以得到一个类似的最终结果,结合条形图和第二个变量的折线图,但更喜欢双条图。

我也更愿意坚持使用ggplot,但任何解决方案都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

我用一点点黑客解决了它。我将颜色aestetic设置为Channelfamilyvariables。第二个使用values时,可以防止同一Channel的{​​{1}}相互重叠。

position = "dodge"

enter image description here

如果您不喜欢背景,可以使用其他主题。例如,library(ggplot2) library(reshape2) library(dplyr) mydata <- data.frame( "Channel" = LETTERS[1:11], "V1" = seq(1100, 100, -100), "V2"= seq(110, 10, -10) ) df <- mydata %>% melt(id = c("Channel")) ggplot(df, aes(x = Channel, y = value, fill = Channel, family = variable)) + geom_bar(stat = "identity", position = "dodge", color = "black") + scale_fill_brewer(palette = "RdGy") 包中的theme_base()应该看起来像ggthemes

答案 1 :(得分:1)

您可以通过指定每个相邻条形图重复的颜色来使用基本图形。

barplot(t(mydata[,2:3]), beside=T, col=rep(brewer.pal(11, "RdGy"), each=2), names.arg=LETTERS[1:11])

enter image description here