我有一个记录了能源使用三个建筑物的数据集。 我具有可以从设置钻石来模拟一个熔化数据帧:
data <- melt(diamonds[,c('depth','table','cut','color')],id=c('cut','color'))
从本质上讲,我有来自三个不同的建筑物(7“颜色”因子)加热(“深度”)和冷却(“表”)数据每个月(“切割”)。 我想绘制的三座建筑(7“颜色”因素)并排柱状图每月(“切割”)。
我想表示任一冷却(“表”)或加热(“深度”)的棒基于所述建筑物(“颜色”因子),同时由剩余一个月分组(“切割”),以改变它们的色调。 这是可视化的钻石数据坏的方式,而是应该作为建筑物供热制冷月通常是不重叠的工作。 到目前为止,我有:
p <- ggplot(data,
aes(color,value,group=cut))
p <- p + geom_bar(stat = 'identity',
position = 'dodge',
aes(fill = variable))
print(p)
我试着用scale_fill_manual玩,但不能认为一个可行的策略:
colours <- c('#0000FF', '#0033FF', '#0066FF', '#FF0000', '#FF3300', '#FF6600')
p <- p + scale_fill_manual(values = colours,
group = data$variable)
随着一些挂羊头卖狗肉,这是可能的。 推导基于钻石的数据集是很不错的,但我想用一个较小的数据集工作
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"))