ggplot eliminar etiquetas específicas eje x

votos
0
library(tidyverse)

df <- data.frame(date = as.Date(c(2017-12-01, 2018-01-01, 2018-02-01, 
                                  2018-03-01, 2018-04-01, 2018-05-01, 
                                  2018-06-01, 2018-07-01, 2018-08-01, 
                                  2018-09-01, 2018-10-01, 2018-11-01)), 
                 value = c(0.567859562, 0.514907158, 0.035399304, 0.485728823, 
                           0.925127361, 0.237531067, 0.301930968, 0.133373326, 
                           0.082275426, 0.464255614, 0.2366749, 0.652084264))

ggplot(df, aes(date, value)) + 
  geom_col() + 
  scale_x_date(date_breaks = 1 month, 
                 date_labels = %b) + 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.3))

Quiero mantener mi parcela se muestra a continuación, tal y como es, con dos excepciones. Quiero eliminar la primera Noven la etiqueta del eje X y el último Decen la etiqueta del eje x. He añadido coord_cartesian(xlim = as.Date(c(2017-12-01, 2018-11-01)))a mi código trozo anterior, pero esto elimina el relleno 'espacio en blanco' en cada extremo de mi eje x.

¿Cómo puedo simplemente digo ggplot para eliminar el texto de la primera y última etiquetas del eje x? Este sería el primero Novy el último Dec. Tenga en cuenta que estos no existen en mi dftrama de datos en todo lo dplyrfiltros probablemente no funcionarán.

introducir

Publicado el 19/12/2018 a las 14:15
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
2

Se podría lograr lo que desea mediante el establecimiento de pausas utilizando seq.date:

library(tidyverse);library(lubridate)

df <- data.frame(date = as.Date(c("2017-12-01", "2018-01-01", "2018-02-01", 
                                  "2018-03-01", "2018-04-01", "2018-05-01", 
                                  "2018-06-01", "2018-07-01", "2018-08-01", 
                                  "2018-09-01", "2018-10-01", "2018-11-01")), 
                 value = c(0.567859562, 0.514907158, 0.035399304, 0.485728823, 
                           0.925127361, 0.237531067, 0.301930968, 0.133373326, 
                           0.082275426, 0.464255614, 0.2366749, 0.652084264))



ggplot(df, aes(date, value)) + 
  geom_col() + 
  scale_x_date(
               date_labels = "%b",
               breaks = seq.Date(ymd("2017-12-01"),ymd("2018-11-01"), by = "month")) + 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.3))

introducir descripción de la imagen aquí

Respondida el 19/12/2018 a las 14:29
fuente por usuario

votos
1

Creo que esto es lo que quieres. El date_breaksson innecesarios.

ggplot(df, aes(date, value)) + 
  geom_col() + 
  scale_x_date(date_labels = "%b", breaks = df$date) + 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.3))

gráfico resultante

Respondida el 19/12/2018 a las 14:36
fuente por usuario

votos
0

Yo sugeriría investigar el paquete Lubridate en I - que sería capaz de convertir cualquier valores de fecha desordenados en approrpiate formato POSIXT Además puede extraer información con un mes muy fácilmente - también se puede convertir esas fechas en una sola columna de los meses reales, y el uso que, como su etiqueta de eje, que es más limpio como te gustaría que una columna adicional de sólo el mes correspondiente - también se puede llenar con base en ese mes y hacer algunas otras cosas interesantes!

Respondida el 19/12/2018 a las 14:25
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more