我似乎无法让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()
您认为它与日期字段中的字符值有关吗?
答案 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()