我正在嘗試繪制時間序列變數的 geom_smooth。這是從 2019 年 1 月 1 日開始的每日資料。我想讓主要的網格線和橫軸顯示該季度。但它最終把2019-Q1標簽和結束的季度,我想有它的開始是四分之一。
這是我的代碼:
ggplot(data = stackoverflow, aes(x=Date , y=Value, col=MyName))
geom_smooth(method = "loess", span = 0.5, se=FALSE, size=2)
scale_x_date(date_breaks = "3 months", minor_breaks = "1 month", labels = function(x) zoo::format.yearqtr(x, "%Y-Q%q"))
coord_cartesian(ylim = c(-0.03,0.03))
geom_point(aes(Date, Value))
xlab("Quarter")
theme(panel.grid.major = element_line(colour="white", size=1.5))
(我添加了 geom_point 來顯示各個資料點,但它們不會在我最終展示的圖表中使用。)
結果如下:

如您所見,資料似乎是在 2019-Q1 之前開始的,但我確實有 2019 年 1 月 1 日以后的資料。而且資料似乎在2022-Q1之前就結束了,但我確實有資料包括2021年12月,甚至2022年1月的幾個點。
有沒有辦法讓主要的網格線和刻度標簽出現在季度的開頭?我嘗試將日期添加 30 天,但隨后它在第一個主要網格線上顯示 2019-Q2,我真的很喜歡 2019-Q1 作為第一個刻度標簽。
uj5u.com熱心網友回復:
如果date_breaks引數沒有給您想要的,請改用該breaks引數。只需將要用于主要休息時間的日期向量傳遞給它。創建一個使用很容易seq
my_breaks <- seq(from = as.Date("2019-01-01"), to = as.Date("2022-01-01"), by = "3 months")
ggplot(data = stackoverflow, aes(x = Date , y = Value, col = MyName))
geom_smooth(formula = y ~ x, method = "loess", span = 0.5, se = FALSE, size = 2)
geom_point()
scale_x_date(breaks = my_breaks, minor_breaks = "1 month",
labels = function(x) zoo::format.yearqtr(x, "%Y-Q%q"))
scale_color_manual(values = "#06aee7")
xlab("Quarter")
coord_cartesian(ylim = c(-0.03, 0.03))
theme(panel.grid.major = element_line(colour = "white", size = 1.5))

使用的資料
set.seed(1)
stackoverflow <- data.frame(Date = seq(as.Date("2019-01-01"),
as.Date("2022-01-10"),
by = "1 day"),
Value = rnorm(1106)/40,
MyName = "series name")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/420814.html
標籤:
