我正在查看不同人群的行为(在此数据集中称为Clusters
)以及他们对所使用的浏览器类型的偏好。我想创建一个条形图,显示使用每种类型浏览器的每个群集的百分比。
以下是生成类似数据集的一些代码(请忽略每个群集的百分比不等于1):
browserNames <- c("microsoft","mozilla","google")
clusterNames <- c("Cluster 1","Cluster 2","Cluster 3")
percentages <- runif(n=length(browserNames)*length(clusterNames),min=0,max=1)
myData<-as.data.frame(list(browserNames=rep(browserNames,3),
clusterNames=rep(clusterNames,each=3),
percentages=percentages))
到目前为止,这是我能够提出的代码,以获得我想要的图表:
ggplot(myData, aes(x=browserNames, y=percentages, fill=factor(clusterNames))) +
geom_bar(stat="identity",position="dodge") +
scale_y_continuous(name="Percent Weight", labels=percent)
我希望每个聚类的填充都是一个渐变填充,我确定了高值和低值。因此,在这个例子中,我希望能够为每个表示的集群设置3个高值和低值。
我在使用不同的scale_fill命令时遇到了麻烦,而且我对ggplot很新,我很确定我可能只是做错了。有什么想法吗?
编辑:这是我正在寻找的图片:
(原始图片位于https://www.dropbox.com/s/py6hifejqz7k54v/gradientExample.bmp)
答案 0 :(得分:3)
这接近你的想法吗?
# color set depends on browser
library(RColorBrewer) # for brewer.pal(...)
gg <- with(myData, myData[order(browserNames,percentages),])
gg$colors <- 1:9
colors <- c(brewer.pal(3,"Reds"),brewer.pal(3,"Greens"),brewer.pal(3,"Blues"))
ggplot(zz, aes(x=browserNames, y=percentages,
fill=factor(colors), group=factor(clusterNames))) +
geom_bar(stat="identity",position="dodge", color="grey70") +
scale_fill_manual("Cluster", values=colors,
breaks=c(3,6,9), labels=c("Google","Microsoft","Mosilla"))
# color set depends on cluster
library(RColorBrewer) # for brewer.pal(...)
gg <- with(myData, myData[order(clusterNames,percentages),])
gg$colors <- 1:9
col <- c(brewer.pal(3,"Reds"),brewer.pal(3,"Greens"),brewer.pal(3,"Blues"))
ggplot(gg, aes(x=browserNames, y=percentages,
fill=factor(colors), group=factor(clusterNames))) +
geom_bar(stat="identity",position="dodge", color="grey70") +
scale_fill_manual("Cluster", values=col,
breaks=c(3,6,9), labels=c("Cluster1","Cluster2","Cluster3"))