如何扩大在ggplot独立层颜色?(How to scale colour in ggplot fo

2019-09-23 11:30发布

我有一个记录了能源使用三个建筑物的数据集。 我具有可以从设置钻石来模拟一个熔化数据帧:

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)

Answer 1:

随着一些挂羊头卖狗肉,这是可能的。 推导基于钻石的数据集是很不错的,但我想用一个较小的数据集工作

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"))



文章来源: How to scale colour in ggplot for independent layer?
标签: r scale ggplot2