gpt4 book ai didi

r - 将scale_color与类日期的变量一起使用会产生错误:as.Date.numeric(value):必须提供'origin'

转载 作者:行者123 更新时间:2023-12-01 16:14:46 26 4
gpt4 key购买 nike

我正在尝试使用ggplot2按日期进行着色,但是当我尝试使用scale_color_gradient2自定义颜色时,出现错误消息Error in as.Date.numeric(value) : 'origin' must be supplied

我似乎无法弄清楚如何将原点传递给scale_color_gradient2

我在下面提供了一个示例。有什么建议吗?

set.seed(1)
x1 <- rnorm(100)
x2 <- rnorm(100)
day <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 100)

myData <- data.frame(x1, x2, day)

# this plot works as expected
ggplot(myData, aes(x = x1, y = x2, color = day)) + geom_point()

# scale_color_gradient2() asks for an origin, but I can't figure out how to supply one
ggplot(myData, aes(x = x1, y = x2, color = day)) + geom_point() +
scale_color_gradient2()

最佳答案

scale_color_gradient2需要添加两件事:trans = "date" *和一个明智的midpoint(默认为0)。我使用了mean'day'。请注意,您需要在scale中使用均值的数字版本:

ggplot(myData, aes(x = x1, y = x2, color = day)) +
geom_point() +
scale_color_gradient2(trans = "date", midpoint = as.numeric(mean(myData$day)))


enter image description here



您可能需要更改图例中的默认中断和标签。首先,使用 seqpretty创建一个中断序列:

brk <- seq.Date(min(myData$day), max(myData$day), by = "3 month")
# brk <- pretty(myData$day)


在您的比例尺中将 breakslabels设置为所需的 format

scale_color_gradient2(trans = "date", midpoint = as.numeric(mean(myData$day)), 
breaks = brk,
labels = format(brk, "%Y-%m"))




编辑以下评论:

scale_color_gradient2POSIXct变量一起使用

trans = "time"和明智的 midpoint添加到 scale_color_gradient2。在这里,我使用平均“时间”。请注意,您需要 scale中均值的数字版本。

# some data
d <- data.frame(x = 1:10, y = 1, time = as.POSIXct("2019-02-15 12:00") + 1:10)

ggplot(d, aes(x = x, y = y, color = time)) +
geom_point() +
scale_color_gradient2(trans = "time", midpoint = as.numeric(mean(d$time)))


enter image description here



可能更改图例中的中断和标签,例如

brk <- pretty(d$time)

ggplot(d, aes(x = x, y = y, color = time)) +
geom_point() +
scale_color_gradient2(trans = "time", midpoint = as.numeric(mean(d$time)),
breaks = brk, labels = format(brk, format = "%H:%M:%S"))




*在当前版本的 ggplot2(3.1.0)中,从文档中不能明显看出 trans = "date"trans = "time"存在。在 trans等人的 ?scale_color_gradient参数中,也没有在 ?continuous_scale中提及它们。但是,我提交了一个问题,因此有望在下一个版本中更新文档。

关于r - 将scale_color与类日期的变量一起使用会产生错误:as.Date.numeric(value):必须提供'origin',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54699751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com