2013-05-03 35 views
27

假設我有一個數據幀:使用`geom_line()`與X軸是因素

hist <- data.frame(date=Sys.Date() + 0:13, 
        counts=1:14) 

我想暗算平日的總數,使用連接點。 下面提出上的每個值:

hist <- transform(hist, weekday=factor(weekdays(date), 
             levels=c('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'))) 
ggplot(hist, aes(x=weekday, y=counts)) + geom_point(stat='summary', fun.y=sum) 

當試圖將它們與線(geom_line()),ggplot抱怨只有每個基團具有一個數據觀察,因此不能夠畫一條線連接點之間。

我明白這一點 - 它試圖爲每個工作日(因子水平)畫一條線。

我怎樣才能讓ggplot只是假裝(僅用於行的目的),平日是數字?也許我必須有另一列day_of_week,星期一爲0,星期二爲1,等等?

回答

33

如果我理解正確的問題,指定group=1並添加stat_summary()層應該做的伎倆:

ggplot(hist, aes(x=weekday, y=counts, group=1)) + 
geom_point(stat='summary', fun.y=sum) + 
stat_summary(fun.y=sum, geom="line") 

enter image description here

+3

太棒了! 「group = 1」的用途是什麼(爲什麼是1?這是什麼?) – 2013-05-03 03:44:36

+3

哦,我想我找到了。 [here(ggplot2 documentation)](http://docs.ggplot2.org/current/aes_group_order.html) – 2013-05-03 03:47:22

+5

如果你想一次繪製多行,你應該指定'group = variableWhichDefinesLines' – 2017-02-14 08:56:05