gpt4 book ai didi

r - 强制 ggplot 比例开始,例如第一年,第一个月等

转载 作者:行者123 更新时间:2023-12-04 09:28:03 25 4
gpt4 key购买 nike

我正在寻找一种方法来强制 ggplot 上的日期标签从(看似)逻辑时间开始。我已经多次遇到这个问题,但我目前的问题是我希望休息时间在 01/01/yyyy
我的数据是一个带有 POSIXct 日期列的大型数据集,要在 Flow 列中绘制的数据以及 Site 列中的许多站点名称。

library(ggplot2)
library(scales)
ggplot(AllFlowData, aes(x=Date, y = Flow, colour = Site))+geom_line()+
scale_x_datetime(date_breaks = "1 year", expand =c(0,0),labels=date_format("%Y"))

我可以强制每年休息一次,如果没有 labels=date_format("%Y")(从每年 01/01 开始),它们看起来没问题,但如果我包含 labels=date_format("%Y")(因为有 10 年的数据,所以有点乱)日期标签移动到 ~十一月和 1989 年是第一个标签,即使我的数据从 01/01/1990 开始。

过去我在不同的时间步长上多次遇到过这个问题,例如想要将其强制到每月的 1 号或每天的时间改为在白天的午夜。有没有通用的方法来做到这一点?

我看过 create specific date range in ggplot2 ( scale_x_date) ,但我不想对我的休息时间进行硬编码,因为我有一些与不同日期范围有关的图。

谢谢

最佳答案

如果日期以向量形式出现,例如:

dates <- seq.Date(as.Date("2001-03-04"), as.Date("2001-11-04"), by="day")
## "2001-03-04" "2001-03-05" "2001-03-06" ... "2001-11-03" "2001-11-04"

使用 pretty.Dates() 对终点做出最佳猜测。
range(pretty(dates))
## "2001-01-01" "2002-01-01"

然后将此范围传递给 ggplot。

但是,我推荐 coord_cartesian() 而不是 scale_x_date() 。通常我想裁剪图形边界,而不是完全排除完全的值(这可能会弄乱诸如黄土摘要之类的东西)。

关于r - 强制 ggplot 比例开始,例如第一年,第一个月等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44938278/

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