我正在尝试使用ggplot2
重新创建Tableau生成的此图表。我已经足够了,但我似乎无法弄清楚如何添加颜色(其强度与利润额成正比)。
数据集为here
这是我要复制的情节
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))
答案 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))
答案 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插件。