我有一个关于如何格式化要在ggplot中使用的列数据类型的问题。
我有一个名为“dat1”的变量,它是一个由字符组成的矩阵
dat1 <- c("2017-07-14 18:00:00", "2017-07-14 19:00:00","2017-07-14 20:00:00","2017-07-14 21:00:00", "2017-07-14 22:00:00", "2017-07-14 23:00:00")
dat1=as.matrix(dat1)
> class(dat1)
"matrix"
> class(dat1[,1])
"character"
“mean_hour”是另一个变量,它是一个数字类型的矩阵
mean_hour <- c(132,134,432,233,564,345)
mean_hour=as.matrix(mean_hour)
> class(mean_hour)
[1] "matrix"
> class(mean_hour[,1])
[1] "numeric"
然后我用dat1和mean_hour创建了一个data.frame:
med_horaria_plot <- data.frame(dat1,mean_hour)
这个data.frame保持这种方式:
> med_horaria_plot
dat1 mean_hour
1 2017-07-14 18:00:00 132
2 2017-07-14 19:00:00 134
3 2017-07-14 20:00:00 432
4 2017-07-14 21:00:00 233
5 2017-07-14 22:00:00 564
6 2017-07-14 23:00:00 345
> class(med_horaria_plot[,1])
[1] "factor"
> class(med_horaria_plot[,2])
[1] "numeric"
> class(med_horaria_plot)
[1] "data.frame"
这是一个较小的版本 - 完整的data.frame要大得多,当我在ggplot中绘图时,x轴上的日期都叠加了
如何更改这些列的类型以便我可以在ggplot中使用它们,然后在绘图上选择我想要的小时数以避免重叠
答案 0 :(得分:0)
您可以直接将dat1
列转换为POSIXct
(ggplot接受的两种日期格式之一):
med_horaria_plot$dat1 <- as.POSIXct(med_horaria_plot$dat1, format = "%Y-%m-%d %H:%M:%S")
然后像往常一样绘图,因为ggplot倾向于自己处理POSIXct
数据上的标签:
ggplot() +
geom_line(data = med_horaria_plot, aes(x = dat1, y = (mean_hour)),group=1,linetype=1)
如果您仍想更改标签,可以尝试scale_x_datetime()
:
ggplot() +
geom_line(data = med_horaria_plot, aes(x = dat1, y = (mean_hour)),group=1,linetype=1) +
scale_x_datetime(date_labels = "%b %d")