x轴是按时间间隔分解的时间。数据框中有一个 interval 列,用于指定每行的时间。该列是一个因子,其中每个区间是不同的因子级别。
使用geom_histogram和geom_freqpoly绘制直方图或直线效果很好,但是我希望有一条直线,就像geom_freqpoly提供的一样,填充区域。
目前我正在使用geom_freqpoly:
ggplot(quake.data, aes(interval, fill=tweet.type)) + geom_freqpoly(aes(group = tweet.type, colour = tweet.type)) + opts(axis.text.x=theme_text(angle=-60, hjust=0, size = 6))
我希望有一个填充区域,例如geom_density
提供的区域,但没有平滑线:
已经建议geom_area
,有没有办法使用ggplot2生成的统计量,例如..count ..,用于geom_area的y值?或者,计数聚合是否需要在使用ggplot2之前进行?
如答案中所述,geom_area(...,stat =“bin”)是解决方案:
ggplot(quake.data, aes(interval)) + geom_area(aes(y = ..count.., fill = tweet.type, group = tweet.type), stat = "bin") + opts(axis.text.x=theme_text(angle=-60, hjust=0, size = 6))
产生
答案 0 :(得分:14)
也许你想要:
geom_area(aes(y = ..count..), stat = "bin")
答案 1 :(得分:3)
geom_ribbon
可用于在两行之间生成填充区域,而无需显式构造多边形。有很好的文档here。
答案 2 :(得分:1)
我不完全确定你的目标是什么。你想要一条线还是一条线。您应该查看geom_bar填充栏。类似的东西:
p <- ggplot(data, aes(x = time, y = count))
p + geom_bar(stat = "identity")
如果你想在下面填充一行,那么你应该看一下我没有亲自使用的geom_area,但看起来这个结构几乎是一样的。
p <- ggplot(data, aes(x = time, y = count))
p + geom_area()
希望有所帮助。提供更多信息,我们可能会更有帮助。
实际上我会抛出一个索引,只是数据行并将其用作x,然后使用
p <- ggplot(data, aes(x = index, y = count))
p + geom_bar(stat = "identity") + scale_x_continuous("Intervals",
breaks = index, labels = intervals)
答案 3 :(得分:1)
ggplot(quake.data, aes(interval, fill=tweet.type, group = 1)) + geom_density()
但我认为这不是一个有意义的图形。