dati falsi:
df = data.frame(year = as.factor(1800:2000),
variable = rnorm(length(1800:2000)))
tuo plot con i dati falsi:
ggplot(df, aes(x = year, y = variable, group = 1)) +
geom_line()
Il problema è che la variabile anno è un factor
(o forse una stringa?), quindi è interpretato come categorica. È possibile lavorare in questo quadro:
ggplot(df, aes(x = year, y = variable, group = 1)) +
geom_line() +
scale_x_discrete(breaks = levels(df$year)[c(T, rep(F, 9))])
O, meglio ancora, è possibile convertirlo in numerico e le cose funzionare automaticamente:
df$real_year = as.numeric(as.character(df$year))
ggplot(df, aes(x = real_year, y = variable)) +
geom_line()
Si noti che questo, a farlo "nel modo giusto", è non devi preoccuparti di group = 1
o fare casino con la bilancia. ggplot ti premia di avere i tuoi dati in un formato corretto: correggi i tuoi dati e non dovrai correggere la tua trama. Se si desidera assicurarsi che le etichette siano esattamente ogni 10 anni, è possibile utilizzare scale_x_continuous
come suggerito dall'utente2034412, ma per impostazione predefinita sarà una buona ipotesi di interruzioni "carine" nell'asse.
Se il vostro asse x è una data reale o datetime, qualcosa di simile 1984-10-31
allora si dovrebbe convertirlo in un oggetto Date
(o forse un oggetto POSIX
se ha tempo pure), e di nuovo ggplot
sarà quindi sapere come gestirlo in modo appropriato. Vedere ?strftime
(funzione di base) o il pacchetto lubridate
per le conversioni in classi di data appropriate.