BarPlots中的颜色

时间:2014-05-12 03:16:06

标签: r ggplot2

我正在尝试使用ggplot2重新创建Tableau生成的此图表。我已经足够了,但我似乎无法弄清楚如何添加颜色(其强度与利润额成正比)。

数据集为here

这是我要复制的情节

ggplot image

https://www.dropbox.com/s/wcu780m72a85lvi/Screen%20Shot%202014-05-11%20at%209.05.49%20PM.png

到目前为止,这是我的代码:

    ggplot(coffee,aes(x=Product,weight=Sales))
    +geom_bar()+facet_grid(Market~Product.Type,scales="free_x",space="free")
    +ylab("Sales")+theme(axis.text.x=element_text(angle=90))

2 个答案:

答案 0 :(得分:3)

使用聚合函数。

library(ggplot2)

coffee <- read.csv('CoffeeChain.csv')
agg <- aggregate(cbind(Profit, Sales) ~ Product+Market+Product.Type, data=coffee, FUN=sum)

ggplot(agg, aes(x=Product, weight=Sales, fill=Profit), stat="identity") +
  geom_bar() +
  scale_fill_gradientn(colours=c("#F37767", "#9FC08D", "#6BA862", "#2B893E", "#036227")) +
  facet_grid(Market~Product.Type, scales="free_x", space="free") +
    ylab("Sales") +
    theme(axis.text.x=element_text(angle=90))

Pretty pic

答案 1 :(得分:2)

可能不是最好的方法:

require(ggplot2)
aggProfit <- ave(coffee$Profit, coffee$Product.Type, coffee$Product, coffee$Market, FUN=sum)
coffee$Breaks<- cut(aggProfit, c(seq(-8000, 25000, 5000), max(aggSales)), dig.lab = 10)
appcolors <- c("#F37767", "#9FC08D", "#6BA862", "#2B893E", "#036227")
gg <- ggplot(coffee,aes(x=Product,weight=Sales, fill = Breaks))+
  geom_bar()+facet_grid(Market~Product.Type,scales="free_x",space="free")+
  ylab("Sales")+theme(axis.text.x=element_text(angle=90)) +
  scale_fill_manual(values=colorRampPalette(appcolors)( length(levels(coffee$Breaks)) ))
plot(gg)

要获取颜色c("#F37767", "#9FC08D", "#6BA862", "#2B893E", "#036227"),我使用了ColorZilla插件。

enter image description here