Come correggere l'errore r: valore discreto fornito su scala continua
Un errore che potresti riscontrare in R è:
Error: Discrete value supplied to continuous scale
Questo errore si verifica quando tenti di applicare una scala continua a un asse in ggplot2, quando la variabile su quell’asse non è numerica.
Questo tutorial spiega esattamente come correggere questo errore.
Come riprodurre l’errore
Supponiamo di avere il seguente frame di dati in R:
#create data frame
df = data. frame (x = 1:12,
y = rep(c('1', '2', '3', '4'), times= 3 ))
#view data frame
df
xy
1 1 1
2 2 2
3 3 3
4 4 4
5 5 1
6 6 2
7 7 3
8 8 4
9 9 1
10 10 2
11 11 3
12 12 4
Supponiamo ora di provare a creare un grafico a dispersione con una scala dell’asse y personalizzata utilizzando l’argomento scale_y_continuous() :
library (ggplot2)
#attempt to create scatterplot with custom y-axis scale
ggplot(df, aes (x, y)) +
geom_point() +
scale_y_continuous(limits = c(0, 10))
Error: Discrete value supplied to continuous scale
Stiamo ricevendo un errore perché la nostra variabile dell’asse Y è un carattere anziché una variabile numerica.
Possiamo confermarlo utilizzando la funzione class( ):
#check class of y variable
class(df$y)
[1] “character”
Come correggere l’errore
Il modo più semplice per correggere questo errore è convertire la variabile dell’asse Y in una variabile numerica prima di creare il grafico a dispersione:
library (ggplot2)
#convert y variable to numeric
df$y <- as. numeric (df$y)
#create scatterplot with custom y-axis scale
ggplot(df, aes (x, y)) +
geom_point() +
scale_y_continuous(limits = c(0, 10))
Tieni presente che non riceviamo alcun errore perché abbiamo utilizzato scale_y_continuous() con una variabile numerica anziché una variabile di carattere.
Puoi trovare la documentazione online completa per la funzione scale_y_continuous() qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre funzioni di stampa comuni in ggplot2:
Come impostare le interruzioni degli assi in ggplot2
Come rimuovere le etichette degli assi in ggplot2
Come ruotare le etichette degli assi in ggplot2