Hoe op te lossen in r: plot.new is nog niet aangeroepen


Een fout die u kunt tegenkomen bij het gebruik van R is:

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

Deze fout treedt op wanneer u probeert een actie uit te voeren waarvoor een plot al bestaat in R, maar er geen plot bestaat.

De volgende voorbeelden laten zien hoe u deze fout in de praktijk kunt corrigeren.

Voorbeeld 1: Hoe de fout met lines() op te lossen

Stel dat we een passende regressielijn in R proberen uit te zetten:

 #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

We ontvangen een foutmelding omdat we de functie lines() niet kunnen gebruiken zonder eerst een pad in R te maken.

Om deze fout te corrigeren, kunnen we eerst een spreidingsdiagram maken en vervolgens de functie lines() gebruiken:

 #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))) 

Houd er rekening mee dat we geen foutmelding ontvangen omdat we eerst de functie plot() hebben gebruikt voordat we de functie lines() gebruikten.

Voorbeeld 2: Hoe corrigeer je een fout met abline()

Stel dat we een spreidingsdiagram proberen te maken met een rechte horizontale lijn 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

We ontvangen een foutmelding omdat we de functie abline() niet kunnen gebruiken zonder eerst een plot in R te maken.

Om deze fout te corrigeren, kunnen we eerst een spreidingsdiagram maken en vervolgens de functie abline() gebruiken:

 #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)

Houd er rekening mee dat we geen foutmelding ontvangen omdat we eerst de functie plot() hebben gebruikt voordat we de functie abline() gebruikten.

Gerelateerd: Hoe aline() in R te gebruiken om rechte lijnen aan paden toe te voegen

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:

Hoe op te lossen in R: onverwachte tekenreeksconstante
Oplossing in R: ongeldige sjabloonformule in ExtractVars
Hoe op te lossen in R: argument is noch numeriek noch logisch: return na

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert