通过一些技巧,这是可能的。基于钻石导出数据集非常好,但我想使用较小的数据集
set.seed(1234)
data <-
expand.grid(month = month.abb,
building = c("Building A", "Building B", "Building C"),
hc = c("Heating", "Cooling"))
data$value <- rnorm(nrow(data), 60, 10)
您希望填充颜色基于变量 (hc
)和建筑物(building
),因此将其设置为该交互。
ggplot(data, aes(building,value,group=month)) +
geom_bar(stat = 'identity',
position = 'dodge',
aes(fill = interaction(building, hc)))
我们可以选择代表不同近色调的颜色,使它们更像您想要的。我用了中间的“蓝调”和“红调”RColorBrewer
调色板。
colours <- c("#FC9272", "#FB6A4A", "#EF3B2C", "#9ECAE1", "#6BAED6", "#4292C6")
# library("RColorBrewer")
# colours <- c(brewer.pal(9,"Reds")[4:6], brewer.pal(9,"Blues")[4:6])
并使用scale_fill_manual
分配这些颜色。
ggplot(data, aes(building,value,group=month)) +
geom_bar(stat = 'identity',
position = 'dodge',
aes(fill = interaction(building, hc))) +
scale_fill_manual(values=colours)
真正的技巧在于让传说变得不那么复杂。我只列出了 2 个关卡(中间的建筑物的颜色)并给它们不同的名称(以及图例的不同标题)。
ggplot(data, aes(building,value,group=month)) +
geom_bar(stat = 'identity',
position = 'dodge',
aes(fill = interaction(building, hc))) +
scale_fill_manual("Heating/cooling",
values=colours,
breaks=c("Building B.Heating", "Building B.Cooling"),
labels=c("Heating", "Cooling"))