R ggplot2统计数据=";“身份”;而在条形图中叠加颜色则给出;条纹的;条形图
在回答我的问题之后,我提出了另一个问题: 如何在不重塑数据的情况下,根据另一个类别以不同颜色绘制堆叠条形图,同时使用stats=“identity”汇总每个堆叠区域的值 stats标识可以很好地对值进行汇总,但对于非堆叠列。在堆叠的列中,堆叠以某种方式“倍增”或“条带化”,见下图 一些数据样本:R ggplot2统计数据=";“身份”;而在条形图中叠加颜色则给出;条纹的;条形图,r,ggplot2,R,Ggplot2,在回答我的问题之后,我提出了另一个问题: 如何在不重塑数据的情况下,根据另一个类别以不同颜色绘制堆叠条形图,同时使用stats=“identity”汇总每个堆叠区域的值 stats标识可以很好地对值进行汇总,但对于非堆叠列。在堆叠的列中,堆叠以某种方式“倍增”或“条带化”,见下图 一些数据样本: element <- rep("apples", 15) qty <- c(2, 1, 4, 3, 6, 2, 1, 4, 3, 6, 2, 1, 4, 3, 6) category1 &l
element <- rep("apples", 15)
qty <- c(2, 1, 4, 3, 6, 2, 1, 4, 3, 6, 2, 1, 4, 3, 6)
category1 <- c("Red", "Green", "Red", "Green", "Yellow")
category2 <- c("small","big","big","small","small")
d <- data.frame(element=element, qty=qty, category1=category1, category2=category2)
然后:ggplot(d,aes(x=类别1,y=数量,fill=类别2))+geom_bar(stat=“identity”) 但是图表有点混乱:颜色没有组合在一起 为什么会有这种行为
是否仍有一个选项可以在不重塑数据的情况下正确分组颜色 一种方法是按
类别2
对数据进行排序。这也可以在ggplot()调用中完成
ggplot(d[order(d$category2),], aes(x=category1, y=qty, fill=category2)) +
geom_bar(stat="identity")
我曾经使用过这个解决方案,但碰巧在我的大型数据库(60000个条目)上,有序的堆叠条ggplot2根据缩放级别在条之间绘制了一些空白。不确定这个问题是从哪里来的——但有一种猜测是我堆积了太多的条:p
使用plyr聚合数据解决了问题:
element <- rep("apples", 15)
qty <- c(2, 1, 4, 3, 6, 2, 1, 4, 3, 6, 2, 1, 4, 3, 6, )
category1 <- c("Red", "Green", "Red", "Green", "Yellow")
category2 <- c("small","big","big","small","small")
d <- data.frame(element=element, qty=qty, category1=category1, category2=category2)
1:数据帧名称
2,3:要保留的列->要进行计算的分组因子
概述:创建新的数据帧(与转换不同)
4:计算列的名称
函数:要应用的函数-这里是sum()
6:应用函数的列
4、5、6可重复计算更多字段
GG2:
ggplot(d,aes(x=类别1,y=数量,fill=类别2))+geom_bar(stat=“identity”)
现在,正如罗曼·卢什特里克(Roman Luštrik)所建议的那样,数据是根据要显示的图表进行聚合的
应用ddply后,数据确实更清晰:
category1 category2 qty
1 Green big 3
2 Green small 9
3 Red big 12
4 Red small 6
5 Yellow small 18
我终于了解了如何管理我的数据集,因为这是一个非常棒的信息源:
还有那个:
。。。就因为?ddply有点。。。奇怪(示例不同于选项的解释)-看起来没有关于速记的说明。。。但我可能遗漏了一点…为什么重塑是不可能的stat=identity
只会画出你给它的东西。在您的例子中,是一个混乱的数据集。您必须手动处理该表以获得所需的结果(我不知道它应该是什么样子)。我尝试将最轻的代码嵌入到php编码的插件中,以包含在网站(tikiwiki CMS)中,这样非R-Wiki用户仍然可以根据其数据自定义一些统计数据。另外,由于一个页面中可能有许多插件,我希望保持服务器用于显示低统计数据。。。也就是说,重塑并不是不可能的:)
d <- ddply(d, .(category1, category2), summarize, qty=sum(qty, na.rm = TRUE))
ddply(1, .(2, 3), summarize, 4=function(6, na.rm = TRUE))
category1 category2 qty
1 Green big 3
2 Green small 9
3 Red big 12
4 Red small 6
5 Yellow small 18