Как исправить ошибку R: дискретное значение передается в непрерывную шкалу

Как исправить ошибку R: дискретное значение передается в непрерывную шкалу

Одна ошибка, с которой вы можете столкнуться в R:

Error: Discrete value supplied to continuous scale

Эта ошибка возникает, когда вы пытаетесь применить непрерывную шкалу к оси в ggplot2, но переменная на этой оси не является числовой.

В этом руководстве рассказывается, как именно исправить эту ошибку.

Как воспроизвести ошибку

Предположим, у нас есть следующий фрейм данных в R:

#create data frame
df = data.frame(x = 1:12,
 y = rep(c('1', '2', '3', '4'), times= 3 ))

#view data frame
df

 x y
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

Теперь предположим, что мы пытаемся создать диаграмму рассеяния с пользовательским масштабом по оси Y, используя аргумент 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

Мы получаем ошибку, потому что наша переменная оси Y является символом, а не числовой переменной.

Мы можем подтвердить это, используя функцию class( ):

#check class of y variable
class(df$y)

[1] "character"

Как исправить ошибку

Самый простой способ исправить эту ошибку — преобразовать переменную оси Y в числовую переменную перед созданием диаграммы рассеяния:

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

Обратите внимание, что мы не получили никакой ошибки, потому что мы использовали scale_y_continuous() с числовой переменной вместо символьной.

Вы можете найти полную онлайн-документацию для функции scale_y_continuous() здесь .

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

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

Как установить разрывы осей в ggplot2
Как удалить метки осей в ggplot2
Как повернуть метки осей в ggplot2

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