Come risolvere in r: plot.new non è stato ancora chiamato


Un errore che potresti riscontrare quando usi R è:

 Error in plot.xy(xy.coords(x, y), type = type, ...): 
  plot.new has not been called yet

Questo errore si verifica quando si tenta di eseguire un’azione che richiede che una trama esista già in R, ma non esiste alcuna trama.

I seguenti esempi mostrano come correggere questo errore nella pratica.

Esempio 1: come correggere l’errore con righe()

Supponiamo di voler tracciare una retta di regressione adattata in R:

 #createdata
df <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
                 y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28))

#fit polynomial regression model
model <- lm(y~poly(x, 2), data=df)

#define new sequence of x-values
new_x <- seq(min(df$x), max(df$y))

#attempt to plot fitted regression line
lines(new_x, predict(model, newdata = data. frame (x=new_x))) 

Error in plot.xy(xy.coords(x, y), type = type, ...): 
  plot.new has not been called yet

Stiamo ricevendo un errore perché non possiamo usare la funzione lines() senza prima creare un percorso in R.

Per correggere questo errore, possiamo prima creare un grafico a dispersione e poi utilizzare la funzione lines() :

 #create data
df <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
                 y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28))

#fit polynomial regression model
model <- lm(y~poly(x, 2), data=df)

#define new sequence of x-values
new_x <- seq(min(df$x), max(df$y))

#create scatterplot of x vs. y values
plot(y~x, data=df)

#attempt to plot fitted regression line
lines(new_x, predict(model, newdata = data. frame (x=new_x))) 

Tieni presente che non riceviamo un errore perché abbiamo utilizzato la funzione plot() prima di utilizzare la funzione lines() .

Esempio 2: come correggere un errore con abline()

Supponiamo di provare a creare un grafico a dispersione con una linea retta orizzontale in R:

 #create data
df <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
                 y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28))

#attempt to add horizontal line at y=10
abline(a=10, b=0, lwd=2)

Error in plot.xy(xy.coords(x, y), type = type, ...):
  plot.new has not been called yet

Stiamo ricevendo un errore perché non possiamo usare la funzione abline() senza prima creare un grafico in R.

Per correggere questo errore, possiamo prima creare un grafico a dispersione e poi utilizzare la funzione abline() :

 #createdata
df <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
                 y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28))

#create scatterplot of x vs. y
plot(y~x, data=df)

#add horizontal line at y=10
abline(a=10, b=0, lwd=2)

Tieni presente che non riceviamo un errore perché abbiamo utilizzato la funzione plot() prima di utilizzare la funzione abline() .

Correlati: come utilizzare aline() in R per aggiungere linee rette ai percorsi

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in R:

Come risolvere in R: costante di stringa inaspettata
Come risolvere il problema in R: formula modello non valida in ExtractVars
Come risolvere in R: l’argomento non è né numerico né logico: return na

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *