2017-06-03 77 views
1

我似乎無法讓geom_smooth數據正常工作。R Newb ggplot2問題

示例數據:

## A tibble: 12 x 4 
    UID Month  n tot 
    <dbl> <chr> <int> <dbl> 
1 1001 2016-04  2 75 
2 1001 2016-05  7 500 
3 1001 2016-06  3 1673 
4 1001 2016-07  5 288 
5 1001 2016-08  2 123 
6 1001 2016-09  3 739 
7 1001 2016-10  4 241 
8 1001 2016-12  2 512 
9 1001 2017-01  5 350 
10 1001 2017-02  1 48 
11 1001 2017-03  2 125 
12 1001 2017-04  2 NA 

繪製代碼:

ggplot(one, aes(Month, tot)) + geom_point() + geom_smooth() 

你認爲它有事情做在日期字段的字符值?

回答

0

有時用線條和平滑器,你必須指定點實際上應該與線接合,這樣你就可以添加group = 1,以確保一切都被視爲同一組的一部分:

ggplot(one, aes(Month, tot)) + 
    geom_point() + 
    geom_smooth(aes(group=1)) 
0

是的,是防止平滑的Month列的格式。問題是:如何將該列轉換爲日期?鑑於你只有年和月,但日期需要一天。

有兩種選擇。你可以使用as.yearmon從動物園包轉換爲yearmon對象:

library(dplyr) 
one %>% 
    mutate(date = zoo::as.yearmon(Month)) %>% 
    ggplot(aes(date, tot)) + geom_point() + geom_smooth() 

或者你可以假設日期是每個月的第一天,以轉換爲一個日期:

library(dplyr) 
one %>% 
    mutate(date = as.Date(paste(Month, "01", sep = "-"))) %>% 
    ggplot(aes(date, tot)) + geom_point() + geom_smooth() 

enter image description here