Как исправить: эстетика должна быть либо длины 1, либо такой же, как у данных

Как исправить: эстетика должна быть либо длины 1, либо такой же, как у данных

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

Error: Aesthetics must be either length 1 or the same as the data (5): fill

Эта ошибка возникает, когда вы пытаетесь указать цвета заливки для использования на графике ggplot2, но указанное вами количество цветов отличается от 1 или отличается от общего количества объектов, которые должны быть заполнены.

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

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

Предположим, мы работаем со встроенным набором данных R под названием airquality :

#view first six lines of *airquality* dataset
head(airquality)

 Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6

Теперь предположим, что мы пытаемся создать несколько диаграмм, чтобы визуализировать распределение значений озона для каждого месяца:

library (ggplot2)

#attempt to create multiple boxplots
ggplot(data = airquality, aes(x=as. character (Month), y=Temp)) +
 geom_boxplot(fill=c('steelblue', 'red'))

Error: Aesthetics must be either length 1 or the same as the data (5): fill

Мы получаем ошибку, потому что в наборе данных есть 5 уникальных месяцев (таким образом, мы создадим 5 блочных диаграмм), но мы указали только два цвета для аргумента заливки .

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

Есть два способа исправить эту ошибку:

Метод 1: используйте только один цвет в аргументе заливки

Мы могли бы использовать только один цвет в аргументе заливки:

library (ggplot2)
ggplot(data = airquality, aes(x=as. character (Month), y=Temp)) +
 geom_boxplot(fill=c('steelblue'))

Это позволяет нам закрасить каждую диаграмму одним и тем же цветом.

Метод 2: используйте то же количество цветов, что и количество диаграмм

Мы также можем указать пять цветов для использования, так как это соответствует количеству блочных диаграмм, которые мы создадим:

library (ggplot2)
ggplot(data = airquality, aes(x=as. character (Month), y=Temp)) +
 geom_boxplot(fill=c('steelblue', 'red', 'purple', 'green', 'orange')) 

Мы не получаем и не получаем ошибку, потому что количество предоставленных нами цветов соответствует количеству коробочных диаграмм.

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

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

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

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