如何解决:美学必须为长度 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 中的其他常见错误:

如何解决:以连续规模提供离散值
如何修复:参数既不是数字也不是逻辑:返回 na
如何修复:替换长度为零

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注