Как исправить: длина эстетики должна быть либо равна 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 air quality 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:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *