我使用来自不同数据框的共享公共变量的数据,在多个条形图中使用了一致的colour scheme。这种方法基于对this question的回答。在每种情况下,我都在看一个变量。
我现在要做的是在同一个图上查看两个变量,保持颜色方案一致。除了A
的两个小条应该是相同的颜色(调色板中的第一个),B
的两个小条应该是相同的颜色(调色板中的第二个小节)之外,它应该类似于以下内容)等
示例数据:
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中做到这一点(这是我的偏好)但是没有成功。我已经使用了包reshape2
来melt
数据,然后使用fill
,但这只能让我获得两种颜色。我也试过以各种方式使用position='dodge'
而没有运气。我可以得到一个类似的最终结果,结合条形图和第二个变量的折线图,但更喜欢双条图。
我也更愿意坚持使用ggplot,但任何解决方案都会受到赞赏。
答案 0 :(得分:2)
我用一点点黑客解决了它。我将颜色aestetic设置为Channel
和family
为variables
。第二个使用values
时,可以防止同一Channel
的{{1}}相互重叠。
position = "dodge"
如果您不喜欢背景,可以使用其他主题。例如,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)