Як виправити в r: plot.new ще не викликано


Помилка, з якою ви можете зіткнутися під час використання R:

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

Ця помилка виникає, коли ви намагаєтеся виконати дію, яка вимагає наявності діаграми в R, але діаграми не існує.

Наведені нижче приклади показують, як виправити цю помилку на практиці.

Приклад 1: як виправити помилку за допомогою lines()

Припустімо, ми намагаємося побудувати підігнану лінію регресії в 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

Ми отримуємо помилку, оскільки ми не можемо використовувати функцію lines() без попереднього створення шляху в R.

Щоб виправити цю помилку, ми можемо спочатку створити точкову діаграму, а потім використати функцію 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))) 

Зауважте, що ми не отримуємо повідомлення про помилку, оскільки спочатку використовували функцію plot() перед використанням функції lines() .

Приклад 2: як виправити помилку за допомогою abline()

Припустімо, ми намагаємося створити діаграму розсіювання з прямою горизонтальною лінією в 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

Ми отримуємо помилку, оскільки ми не можемо використовувати функцію abline() без попереднього створення графіка в R.

Щоб виправити цю помилку, ми можемо спочатку створити точкову діаграму, а потім використати функцію 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)

Зауважте, що ми не отримуємо повідомлення про помилку, тому що спочатку використовували функцію plot() перед використанням функції abline() .

Пов’язане: Як використовувати aline() у R для додавання прямих ліній до контурів

Додаткові ресурси

У наступних посібниках пояснюється, як виправити інші типові помилки в R:

Як виправити в R: неочікувана рядкова константа
Як виправити в R: недійсна формула шаблону в ExtractVars
Як виправити в R: аргумент не є ні числовим, ні логічним: return na

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *