在geom_freqpoly线下填充区域的最简单方法是什么?

时间:2010-05-02 19:21:48

标签: r ggplot2

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))

plots

我希望有一个填充区域,例如geom_density提供的区域,但没有平滑线:

smoooth

已经建议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))

产生

desired

4 个答案:

答案 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()

但我认为这不是一个有意义的图形。