R Newb ggplot2问题

时间:2017-06-03 05:23:34

标签: r

我似乎无法让geom_smooth数据发挥作用。

示例数据:

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

您认为它与日期字段中的字符值有关吗?

2 个答案:

答案 0 :(得分:0)

有时使用直线和平滑线,您必须指定哪些点应该与线实际连接,因此您可以添加group = 1以确保所有内容都被视为同一组的一部分:

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

答案 1 :(得分:0)

是的,Month列的格式会阻止顺畅。问题是:如何将该列转换为日期?鉴于您只有年和月,但日期需要一天。

两个选项。您可以使用zoo包中的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