Как исправить ошибку 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
xy
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_continous() :
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_continous() с числовой переменной вместо символьной.
Полную онлайн-документацию по функции Scale_y_continous() вы можете найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные функции построения графиков в ggplot2:
Как установить разрывы осей в ggplot2
Как удалить метки осей в ggplot2
Как повернуть метки осей в ggplot2