Как исправить в R: plot.new еще не вызывался

Как исправить в 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:

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

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

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

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

Связанный: Как использовать abline() в R для добавления прямых линий на графики

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить в R: непредвиденная строковая константа
Как исправить в R: неверная формула модели в ExtractVars
Как исправить в R: аргумент не является числовым или логическим: возвращается na

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.