在 scale_x_continuous 中使用带有中断的日期
Using date in scale_x_continuous with breaks
我正在尝试替换使用步骤创建的 x 轴值,这些值是值 1:50。
我可以使用 scale_x_continuous 轻松替换这些,但是当我使用 breaks 时,我得到以下错误。我无法在我正在使用的绘图函数中使用日期和时间,因此正在寻找解决方法以在我的轴上获取日期
Date = c( "2018-10-18 00:00:00 BST", "2018-10-18 00:10:00 BST", "2018-10-18 00:20:00 BST", "2018-10-18 00:30:00 BST", "2018-10-18 00:40:00 BST", "2018-10-18 00:50:00 BST",
"2018-10-18 01:00:00 BST", "2018-10-18 01:10:00 BST", "2018-10-18 01:20:00 BST", "2018-10-18 01:30:00 BST", "2018-10-18 01:40:00 BST", "2018-10-18 01:50:00 BST",
"2018-10-18 02:00:00 BST", "2018-10-18 02:10:00 BST", "2018-10-18 02:20:00 BST", "2018-10-18 02:30:00 BST", "2018-10-18 02:40:00 BST", "2018-10-18 02:50:00 BST",
"2018-10-18 03:00:00 BST", "2018-10-18 03:10:00 BST", "2018-10-18 03:20:00 BST", "2018-10-18 03:30:00 BST", "2018-10-18 03:40:00 BST", "2018-10-18 03:50:00 BST",
"2018-10-18 04:00:00 BST", "2018-10-18 04:10:00 BST", "2018-10-18 04:20:00 BST", "2018-10-18 04:30:00 BST", "2018-10-18 04:40:00 BST", "2018-10-18 04:50:00 BST",
"2018-10-18 05:00:00 BST", "2018-10-18 05:10:00 BST", "2018-10-18 05:20:00 BST", "2018-10-18 05:30:00 BST", "2018-10-18 05:40:00 BST", "2018-10-18 05:50:00 BST",
"2018-10-18 06:00:00 BST", "2018-10-18 06:10:00 BST", "2018-10-18 06:20:00 BST", "2018-10-18 06:30:00 BST", "2018-10-18 06:40:00 BST", "2018-10-18 06:50:00 BST",
"2018-10-18 07:00:00 BST", "2018-10-18 07:10:00 BST", "2018-10-18 07:20:00 BST", "2018-10-18 07:30:00 BST", "2018-10-18 07:40:00 BST", "2018-10-18 07:50:00 BST",
"2018-10-18 08:00:00 BST", "2018-10-18 08:10:00 BST")
Step <- c(1:50)
Value <- runif(50,0,10)
Final <- data.frame(Step, Value)
ggplot(Final, aes(x = Step, y = Value)) +
geom_line(size = 1) +
geom_point() +
scale_x_continuous(labels=Date,breaks = seq(1, 50)) #works
scale_x_continuous(labels=Date,breaks = seq(1, 50,by=10)) #doesntwork
Error: `breaks` and `labels` must have the same length
您也需要对标签(在您的案例中是日期)进行子集化:
ggplot(Final, aes(x = Step, y = Value)) +
geom_line(size = 1) +
geom_point() +
scale_x_continuous(labels=Date[seq(1, 50,by=10)],
breaks = seq(1, 50,by=10))
我会放弃创建 Step
并直接使用您的日期作为绘图中的 X 值。
R 不会子集的原因是因为它将您的 50 个日期视为 50 个字符串。
转换为 datettime class 并使用 scale_x_datetime()
:
对其进行操作
Value <- runif(50,0,10)
Final <- data.frame(Value, Date)
Final$Date = as.POSIXct(Date)
ggplot(Final, aes(x = Date, y = Value, group = 1)) +
geom_line(size = 1) +
geom_point() +
scale_x_datetime(date_breaks = "2 hours", date_labels = "%H:%M")
我正在尝试替换使用步骤创建的 x 轴值,这些值是值 1:50。 我可以使用 scale_x_continuous 轻松替换这些,但是当我使用 breaks 时,我得到以下错误。我无法在我正在使用的绘图函数中使用日期和时间,因此正在寻找解决方法以在我的轴上获取日期
Date = c( "2018-10-18 00:00:00 BST", "2018-10-18 00:10:00 BST", "2018-10-18 00:20:00 BST", "2018-10-18 00:30:00 BST", "2018-10-18 00:40:00 BST", "2018-10-18 00:50:00 BST",
"2018-10-18 01:00:00 BST", "2018-10-18 01:10:00 BST", "2018-10-18 01:20:00 BST", "2018-10-18 01:30:00 BST", "2018-10-18 01:40:00 BST", "2018-10-18 01:50:00 BST",
"2018-10-18 02:00:00 BST", "2018-10-18 02:10:00 BST", "2018-10-18 02:20:00 BST", "2018-10-18 02:30:00 BST", "2018-10-18 02:40:00 BST", "2018-10-18 02:50:00 BST",
"2018-10-18 03:00:00 BST", "2018-10-18 03:10:00 BST", "2018-10-18 03:20:00 BST", "2018-10-18 03:30:00 BST", "2018-10-18 03:40:00 BST", "2018-10-18 03:50:00 BST",
"2018-10-18 04:00:00 BST", "2018-10-18 04:10:00 BST", "2018-10-18 04:20:00 BST", "2018-10-18 04:30:00 BST", "2018-10-18 04:40:00 BST", "2018-10-18 04:50:00 BST",
"2018-10-18 05:00:00 BST", "2018-10-18 05:10:00 BST", "2018-10-18 05:20:00 BST", "2018-10-18 05:30:00 BST", "2018-10-18 05:40:00 BST", "2018-10-18 05:50:00 BST",
"2018-10-18 06:00:00 BST", "2018-10-18 06:10:00 BST", "2018-10-18 06:20:00 BST", "2018-10-18 06:30:00 BST", "2018-10-18 06:40:00 BST", "2018-10-18 06:50:00 BST",
"2018-10-18 07:00:00 BST", "2018-10-18 07:10:00 BST", "2018-10-18 07:20:00 BST", "2018-10-18 07:30:00 BST", "2018-10-18 07:40:00 BST", "2018-10-18 07:50:00 BST",
"2018-10-18 08:00:00 BST", "2018-10-18 08:10:00 BST")
Step <- c(1:50)
Value <- runif(50,0,10)
Final <- data.frame(Step, Value)
ggplot(Final, aes(x = Step, y = Value)) +
geom_line(size = 1) +
geom_point() +
scale_x_continuous(labels=Date,breaks = seq(1, 50)) #works
scale_x_continuous(labels=Date,breaks = seq(1, 50,by=10)) #doesntwork
Error: `breaks` and `labels` must have the same length
您也需要对标签(在您的案例中是日期)进行子集化:
ggplot(Final, aes(x = Step, y = Value)) +
geom_line(size = 1) +
geom_point() +
scale_x_continuous(labels=Date[seq(1, 50,by=10)],
breaks = seq(1, 50,by=10))
我会放弃创建 Step
并直接使用您的日期作为绘图中的 X 值。
R 不会子集的原因是因为它将您的 50 个日期视为 50 个字符串。
转换为 datettime class 并使用 scale_x_datetime()
:
Value <- runif(50,0,10)
Final <- data.frame(Value, Date)
Final$Date = as.POSIXct(Date)
ggplot(Final, aes(x = Date, y = Value, group = 1)) +
geom_line(size = 1) +
geom_point() +
scale_x_datetime(date_breaks = "2 hours", date_labels = "%H:%M")