我希望将一个变量映射到一个连续的色标,但如果该值低于某个阈值,则它应该具有特定的颜色。在这个例子中,我想让所有的汽车模型都使用灰色填充的mpg < 20
,而上面的所有东西都使用连续的色标:
library(ggplot2)
dat <- head(mtcars)
dat$model <- head(colnames(mtcars))
dat$is_low <- ifelse(dat$mpg < 20, TRUE, FALSE)
ggplot(dat, aes(x = model, y = mpg, fill = mpg)) +
geom_col()
这有可能吗?我见过的最接近的solution是这个,但它将第二个变量映射到scale_color
,而不是scale_fill_continuous
发布于 2021-02-19 17:35:02
不是最优雅的,但你可以添加一个只过滤到你想要的灰色的图层:
ggplot(dat, aes(x = model, y = mpg, fill = mpg)) +
geom_col() +
geom_col(data = dat[dat$is_low,], fill = "gray70")
发布于 2021-02-19 17:38:52
添加第二层geom_col()
,您可以将每个条形图颜色设置为灰色,如果条形图不符合您的标准,则跳过。您可能还希望更改第一层的着色比例限制。
ggplot(dat, aes(x = model, y = mpg, fill = mpg)) +
geom_col() + geom_col(fill=ifelse(dat$mpg < 20, 'gray', NA))
https://stackoverflow.com/questions/66274831
复制相似问题