我有一个数据集,记录了三座建筑的能源使用情况。我有一个熔化的数据框,可以从菱形集合中模仿:
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)
发布于 2012-10-04 05:45:50
通过一些小把戏,这是可能的。根据菱形导出数据集非常好,但我想使用较小的数据集
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)
真正的诀窍在于让传说变得不那么错综复杂。我只是列出了两个级别(中间的建筑在颜色方面),并给它们不同的名称(和一个不同的标题为图例)。
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"))
https://stackoverflow.com/questions/12716752
复制相似问题