2010-05-02 70 views
6

x軸是按時間間隔分解的時間。數據框中有一個區間列,指定每行的時間。該列是一個因素,其中每個間隔是不同的因子水平。在geom_freqpoly行下填充區域的最簡單方法是什麼?

繪製直方圖或行中使用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

+0

如果你已經在做間隔,你確定你想要一條平滑的曲線嗎? – Dan 2010-05-03 01:03:53

+0

不,我只是在探索ggplot2 geoms,這會產生填充區域。我更喜歡geom_freqpoly,但有一個填充區域。 我猜geom_area會得到,但我不得不手動聚合頻率計數。 – mattrepl 2010-05-03 01:16:05

+0

其實,你有沒有理由使用因子而不是日期時間變量? – hadley 2010-05-04 14:16:53

回答

9

也許你想:

geom_area(aes(y = ..count..), stat = "bin") 
+4

謝謝,我以前使用'stat =「bin」',但忘記了它。我需要買你的書。 =) – mattrepl 2010-05-04 01:46:41

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

和比例適用於geom_area和geom_bar – Dan 2010-05-02 23:33:51

1

ggplot(quake.data, aes(interval, fill=tweet.type, group = 1)) + geom_density()

但我不認爲這是一個有意義的圖形。

+0

看到它後,我同意。我會更新我的問題,以澄清我正在尋找帶有填充區域的geom_freqpoly圖。 它看起來像geom_area會工作,但它可以使用ggplot2提供的統計(例如,..計數..)的Y軸值? – mattrepl 2010-05-03 13:39:47

相關問題