如何解决:美学必须为长度 1 或与数据相同。
在 R 中您可能遇到的错误是:
Error: Aesthetics must be either length 1 or the same as the data (5): fill
当您尝试指定在 ggplot2 绘图中使用的填充颜色,但指定的颜色数量不等于 1 或不等于要填充的对象总数时,会出现此错误。
以下示例展示了如何在实践中纠正此错误。
如何重现错误
假设我们正在使用名为airquality的内置 R 数据集:
#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 个箱线图),但我们只为padding参数提供了两种颜色。
如何修复错误
有两种方法可以修复此错误:
方法 1:在 fill 参数中仅使用一种颜色
我们可以选择在 fill 参数中仅使用一种颜色:
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 中的其他常见错误: