我有一个数据框,我已将小时添加到我的日期结束
数据:
structure(list(date = c("2016-01-30 11", "2016-01-30 13", "2016-01-30 16",
"2016-01-30 18", "2016-01-30 21", "2016-01-31 2", "2016-01-31 5",
"2016-01-31 7", "2016-01-31 13", "2016-01-31 13"), Obs = c(9L,
15L, 15L, 16L, 15L, 16L, 15L, 16L, 14L, 9L), score = structure(c(3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 2L), .Label = c("1", "1.5", "2"
), class = "factor"), date2_1 = c("2016-01-30", "2016-01-30",
"2016-01-30", "2016-01-30", "2016-01-30", "2016-01-31", "2016-01-31",
"2016-01-31", "2016-01-31", "2016-01-31"), date2_2 = c(11L, 13L,
16L, 18L, 21L, 2L, 5L, 7L, 13L, 13L)), .Names = c("date", "Obs",
"score", "date2_1", "date2_2"), class = c("data.table", "data.frame"
), row.names = c(NA, -10L), .internal.selfref = <pointer: 0x00000000001f0788>)
我的情节是:
ggplot(data = tt, aes(date2_1, Obs, colour=score)) +
geom_point() +
scale_colour_discrete(drop=TRUE, limits = levels(t$score))
在另一个数据框中,我只有日期(相当于此数据中的date2_1),并使用as.Date
更改类,以便以下工作:
ggplot(data = t, aes(date, Obs, colour=score)) +
geom_point() +
scale_x_date(date_breaks = "1 day", date_labels="%d") +
scale_colour_discrete(drop=TRUE, limits = levels(t$score))
我想在我展示的第一张图上使用scale_x_date(date_breaks = "1 day", date_labels="%d")
,但使用date2_1
代替date
进行缩放。
额外:更好的是在我的示例数据中使用比例从date
开始运行,但是当我将小时粘贴到它上面时,这不是类日期。此数据框是另一个的子集,其中我有一个日期时间列,其值为2016-01-30 11:50:52
POSIXct
如果有帮助 - 实际上我使用cSplit
然后从中粘贴以获取我在样本数据中的日期。使用as.POSIXct
或strptime
我无法创建仅包含小时的日期,或者如果我scale_x_date
无法使用它。
基本上我有一个只有缩放井的日期的图,但是当使用日期和小时时,日期时间在x轴上均匀分布,而不考虑日期和小时。
对这两个选项的答案将不胜感激!
答案 0 :(得分:2)
目前尚不清楚你遇到的问题是什么,也不是你想要的是什么,但希望这至少可以指出你正确的方向。
您要求的第一个选项是使用x轴date2_1
中的日期,我认为date2_1
转换为Date
没有任何问题:
library(ggplot2)
ggplot(df, aes(as.Date(date2_1), Obs, color = score)) +
geom_point() +
scale_x_date('Date',
date_breaks = 'day',
date_labels = '%d')
第二个选项会考虑date
列中的小时,因此我们必须使用正确的格式将其转换为POSIXct
(请注意使用scale_x_datetime
代替scale_x_date
):
library(dplyr)
library(ggplot2)
df %>%
mutate(date = as.POSIXct(date, format = '%Y-%m-%d %H')) %>%
ggplot(aes(date, Obs, color = score)) +
geom_point() +
scale_x_datetime('Date',
date_breaks = '6 hours',
date_labels = '%d h:%H')
数据:
df <- structure(list(date = c("2016-01-30 11", "2016-01-30 13", "2016-01-30 16",
"2016-01-30 18", "2016-01-30 21", "2016-01-31 2", "2016-01-31 5",
"2016-01-31 7", "2016-01-31 13", "2016-01-31 13"), Obs = c(9L,
15L, 15L, 16L, 15L, 16L, 15L, 16L, 14L, 9L), score = structure(c(3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 2L), .Label = c("1", "1.5", "2"
), class = "factor"), date2_1 = c("2016-01-30", "2016-01-30",
"2016-01-30", "2016-01-30", "2016-01-30", "2016-01-31", "2016-01-31",
"2016-01-31", "2016-01-31", "2016-01-31"), date2_2 = c(11L, 13L,
16L, 18L, 21L, 2L, 5L, 7L, 13L, 13L)), .Names = c("date", "Obs",
"score", "date2_1", "date2_2"), class = c("data.table", "data.frame"
), row.names = c(NA, -10L))
(请注意,我必须从您的.internal.selfref = <pointer: 0x00000000001f0788>
dput