Me gustaría hacer un diagrama con todos los días etiquetados en el eje x.

Aquí están mis datos

my_data <- read.table(text="day value
11/15/19    0.23633
11/16/19    0.28485
11/17/19    0.63127
11/18/19    0.15434
11/19/19    0.47964
11/20/19    0.65967
11/21/19    0.48741
11/22/19    0.84541
11/23/19    0.10123
11/24/19    0.78169
11/25/19    0.23189
11/26/19    0.86665
11/27/19    0.55184
11/28/19    0.81410
11/29/19    0.25821
11/30/19    0.23576
12/1/19 0.46397
12/2/19 0.55764
12/3/19 0.95645
12/4/19 0.63954
12/5/19 0.76766
12/7/19 0.74505
12/8/19 0.65515
12/9/19 0.58222
12/10/19    0.17294", header=TRUE, stringsAsFactors=FALSE)

Aquí está mi código

  my_data %>% 
  ggplot(aes(day, value)) +
  geom_line() +
  scale_x_continuous(breaks = seq(1, nrow(my_data)),
                     labels = my_data$day)

Me da este error: Error in as.Date.numeric(value) : 'origin' must be supplied

Me gustaría hacerlo para que todos los días estén representados en el eje x y, de forma predeterminada, solo haga algunos de los días que se incluyen en este rango de datos.

1
Cauder 11 dic. 2019 a las 19:48

2 respuestas

La mejor respuesta

Intente usar scale_x_date en lugar de scale_x_continuous

my_data %>% 
  ggplot(aes(x = mdy(day), value)) +
  geom_line() +
  scale_x_date(date_breaks = "1 day")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

enter image description here

2
dc37 11 dic. 2019 a las 17:00

Puede usar lubridate para convertir los datos al formato de fecha adecuado:

library(lubridate)

my_data %>% 
  mutate(day = mdy(day)) %>% 
  ggplot(aes(day, value)) +
  geom_line() +
  scale_x_date(date_breaks = "1 day") +
  theme(axis.text.x = element_text(angle=90, vjust=0.5))
2
Alan Dursun 11 dic. 2019 a las 17:00