我有一个好人。我现在已经考虑了很久了。我有这个数据集,这个数据集可能很大。我想基于每个月的前5个最高计数来绘制ggplot堆栈栏。例如,对于1 // 1/2012,最高计数将是I,G,F,D和E.
DF
Date Desc count
1/1/2012 A 10
1/1/2012 B 5
1/1/2012 C 7
1/1/2012 D 25
1/1/2012 E 19
1/1/2012 F 30
1/1/2012 G 50
1/1/2012 H 10
1/1/2012 I 100
2/1/2012 A 10
2/1/2012 B 5
2/1/2012 C 7
2/1/2012 D 25
2/1/2012 E 19
2/1/2012 F 30
2/1/2012 G 50
2/1/2012 H 10
2/1/2012 I 100
3/1/2012 A 1
3/1/2012 B 4
3/1/2012 C 5
3/1/2012 D 6
3/1/2012 E 6
3/1/2012 F 7
3/1/2012 G 8
3/1/2012 H 5
3/1/2012 I 10
我有类似的东西但这会显示所有值:
ggplot(df, aes(Date, count))+ geom_bar(aes(fill=Desc), stat="identity", position="stack") + theme_bw()
答案 0 :(得分:4)
您必须首先对数据进行子集化:
library(plyr)
library(ggplot2)
df_top <- ddply(df, .(Date),
function(x) head(x[order(x$count, decreasing = TRUE),], 5))
ggplot(df_top, aes(Date, count))+
geom_bar(aes(fill=Desc), stat="identity", position="stack") +
theme_bw()