我写了一个R块,它应该为我提供一个彩色的格子框。所有需要的模板都已加载,数据也是如此。
“健康”和“BodyTemperature”的数据来源于医院内部的数据。对于健康来说,可能只有0比1。
与y轴上患者的BodyTemperature相比,它应该在x轴上放置两个相邻的体表,一个显示健康(0),另一个显示不健康(1)。方框应该用“Brewer”的模板着色。
每次我试着用这个块,都会发出警告。解决办法是什么?
颜色:
colour <- brewer.pal(n = 2, name = "Set1")
colourWarnung: n的最小值为3,返回3个不同级别的请求调色板1 "#E41A1C“"#377EB8”"#4DAF4A“
R-块
colour = brewer.pal(n = 2, name = "Set1")
ggplot(Hospital, aes(x = Healthy, y = BodyTemperature)) +
geom_boxplot(fill=c(colour)) +
ylab("Temperature") +
xlab("Healthy") +
ggtitle("Health compared to Temperature")警告转向:
Error in `check_aesthetics()`:
! Aesthetics must be either length 1 or the same as the data (1): fill
Backtrace:
1. base (local) `<fn>`(x)
2. ggplot2:::print.ggplot(x)
4. ggplot2:::ggplot_build.ggplot(x)
5. ggplot2 (local) by_layer(function(l, d) l$compute_geom_2(d))
6. ggplot2 (local) f(l = layers[[i]], d = data[[i]])
7. l$compute_geom_2(d)
8. ggplot2 (local) f(..., self = self)
9. self$geom$use_defaults(data, self$aes_params, modifiers)
10. ggplot2 (local) f(..., self = self)
11. ggplot2:::check_aesthetics(params[aes_params], nrow(data))
Error in check_aesthetics(params[aes_params], nrow(data)) :发布于 2022-10-23 17:49:18
由于您想要用Healthy的值对方框进行着色,您可以通过在fill美学上映射Healthy来这样做。另外,为了使用布鲁尔调色板之一,ggplot2已经提供了一些方便的函数,在fill中,aes被称为scale_fill_brewer。不确定你是否想要一个传奇,但是IMHO没有意义,所以我通过guides删除了它。最后,由于您没有提供任何数据,所以不清楚您的Healthy列是一个数值变量还是一个分类变量。出于这个原因,我在factor中进行包装,使其明确无误。
使用一些伪造的随机示例数据:
set.seed(123)
library(ggplot2)
Hospital <- data.frame(
Healthy = rep(c(0, 1), 50),
BodyTemperature = runif(100)
)
ggplot(Hospital, aes(x = factor(Healthy), y = BodyTemperature)) +
geom_boxplot(aes(fill = factor(Healthy))) +
scale_fill_brewer(palette = "Set1") +
ylab("Temperature") +
xlab("Healthy") +
ggtitle("Health compared to Temperature") +
guides(fill = "none")

https://stackoverflow.com/questions/74173347
复制相似问题