我正试图使用ggplot更改scale_fill_manual的单个条形图的颜色,但由于条形图位于组内(此处为"condition"),因此出现了问题。我怎样才能克服这个问题?
这是我的数据集:
df <- data.frame(
"condition" = c("A", "B", "A", "B", "A", "B", "A", "B", "A", "B", "A", "B", "A", "B", "A", "B", "A", "B", "A", "B"),
"type" = c("Apple", "Apple", "Apple", "Apple", "Pear", "Pear", "Pear", "Pear", "Orange", "Orange", "Orange", "Orange", "Tomato", "Tomato", "Tomato", "Tomato", "Tomato", "Berry", "Berry", "Berry"),
"ripeness" = c("bad","bad", "good", "good", "bad", "bad", "good", "good", "bad","bad", "good", "good", "bad", "bad", "good", "good", "bad","bad", "good", "good"),
count = c(19, 4, 7, 2, 7, 7, 1, 13, 16, 16, 31, 13, 30, 12, 39, 17, 1, 36, 4, 27)
)我用来绘制它的代码是:
plot <- ggplot(df, aes(x=type, y=count, fill=ripeness)) +
geom_bar(stat="summary", width = .7, position = position_dodge(width = .75)) +
theme_light()
#the below is non-working code
plot + scale_fill_manual(values=c("black","blue","black","green","black","stripes-2","black","stripes-3","black", "yellow"))如何指定各个条形的颜色?出于解释的目的,我用颜色名称编写,但会将它们替换为html颜色代码。后来,我还打算用ggpattern (https://coolbutuseless.github.io/package/ggpattern/articles/geom-gallery-geometry.html#colour-example-1)来纹理我的两个条形图,但是如果太难的话,这不需要在这篇文章中解决。
我试图在R中重现这个情节:

发布于 2021-02-01 07:32:33
一种方法是在dataframe中添加一列颜色并使用scale_fill_identity。
library(dplyr)
library(ggplot2)
colors <- c("black","blue","black","green","black","orange",
"black","pink","black", "yellow")
df %>%
distinct(type, ripeness) %>%
mutate(color = colors) %>%
inner_join(df, by = c('type', 'ripeness')) %>%
ggplot(aes(x=type, y=count, fill=color)) +
geom_bar(stat="summary", width = .7, position = position_dodge(width = .75)) +
theme_light() +
scale_fill_identity()

PS -我无法使"stripes-2"和"stripes-3"颜色工作,所以改变了它的其他随机颜色。
https://stackoverflow.com/questions/65988418
复制相似问题