Un enfoque sería para tratar el eje x como numéricos y establecer los descansos y las etiquetas con la estética scale_x_continuous()
.
ggplot(my.data, aes(as.numeric(date), vals)) +
geom_line(size = 1.5) +
scale_x_continuous(breaks = as.numeric(my.data$date)
, labels = format(my.data$date, format = "%m/%d"))
aunque el intervalo entre el 7/24 y el 7/28 parece un poco extraño en mi opinión. Sin embargo, creo que eso es lo que quieres? Avísame si he malinterpretado.
EDITAR
Como se señaló anteriormente, no estaba encantado con la forma en los descansos se veía anteriormente, específicamente con la rejilla gris en el fondo. Esta es una forma de mantener la cuadrícula rectangular y etiquetar solo los puntos donde tenemos datos. Podrías hacer todo esto dentro de la llamada a ggplot, pero creo que es más fácil hacer el procesamiento fuera de ggplot. Primero, crea un vector que contenga la secuencia de números correspondiente a las fechas. A continuación, vamos a actualizar las etiquetas apropiadas y sustituyen a las entradas de NA con " "
para evitar cualquier cosa, desde que se representa en el eje X para aquellas entradas:
xscale <- data.frame(breaks = seq(min(as.numeric(my.data$date)), max(as.numeric(my.data$date)))
, labels = NA)
xscale$labels[xscale$breaks %in% as.numeric(my.data$date)] <- format(my.data$date, format = "%m/%d")
xscale$labels[is.na(xscale$labels)] <- " "
Esto nos da algo que se parece a:
breaks labels
1 15177 07/22
2 15178 07/23
3 15179 07/24
4 15180
5 15181
6 15182
7 15183 07/28
8 15184 07/29
que luego se puede pasar a la escala de la siguiente manera:
scale_x_continuous(breaks = xscale$breaks, labels = xscale$labels)
muchas gracias. la primera parte resolvió mi problema. ¿Sabes por casualidad cómo puedo mantener los saltos del eje x pero eliminar sus líneas de cuadrícula? – Mark
@Mark - 'opts (panel.grid.major = theme_blank(), panel.grid.minor = theme_blank())' debería hacer el truco. – Chase
Lanza el 'Error: valor discreto proporcionado a escala continua' en' ggplot2 1.0.0'. – MYaseen208