Как вручную изменить метку оси X в ggplot? - PullRequest
1 голос
/ 21 марта 2020

Я хочу изменить метки оси X моего ggplot. Ниже приведен пример кода

DF <- data.frame(seq(as.Date("2001-04-01"), to= as.Date("2001-8-31"), by="day"),
                 A = runif(153, 0,10))
colnames(DF)<- c("Date", "A")
ggplot(DF, aes(x = Date, y = A))+
  geom_line()+
scale_x_date(date_labels = "%b", date_breaks = "month", name = "Month")

. Я попытался scale_x_discrete(breaks = c(0,31,60,90,120), labels = c("Jan", "Feb","Mar","Apr","May")), но безуспешно. Я знаю, что мои данные за апрель, но я хотел бы изменить метки, делая вид, что они с января.

1 Ответ

1 голос
/ 21 марта 2020

Вы можете использовать scale_x_date, но передать вектор даты в breaks и вектор символов в labels такой же длины, как описано в официальной документации (https://ggplot2.tidyverse.org/reference/scale_date.html):

ggplot(DF,aes(x = Date, y = A, group = 1))+
  geom_line()+
  scale_x_date(breaks = seq(ymd("2001-04-01"),ymd("2001-08-01"), by = "month"),
                   labels = c("Jan","Feb","Mar","Apr","May"))

enter image description here

РЕДАКТИРОВАТЬ: Вычесть месяцы с использованием lubridate

В качестве альтернативы, используя lubridate, Вы можете вычесть 3 месяца и использовать эту новую переменную даты, чтобы построить ваши данные:

library(lubridate)
library(dplyr)
library(ggplot2)

DF %>% mutate(Date2 = Date %m-% months(3))%>%
  ggplot(aes(x = Date2, y = A))+
  geom_line()+
  scale_x_date(date_labels = "%b", date_breaks = "month", name = "Month")

enter image description here

Выглядит ли то, что вы пытаетесь достичь?

...