R 如何使用两组因子变量填充ggplot?

R 如何使用两组因子变量填充ggplot?,r,ggplot2,fill,geom-bar,R,Ggplot2,Fill,Geom Bar,我正在绘制一个堆叠的条形图。例如: library(data.table) library(ggplot2) dt <- data.table(category = c("A", "B", "C", "D", "A", "B", "C", "D"), variable = c("X", "X", "X", "X", "Y", "Y", "Y", "Y"), value = c(7, 5, 4, 2, 1, 1, 2, 1)) dt$va

我正在绘制一个堆叠的条形图。例如:

library(data.table)
library(ggplot2)

dt <- data.table(category = c("A", "B", "C", "D", "A", "B", "C", "D"),
             variable = c("X", "X", "X", "X", "Y", "Y", "Y", "Y"),
             value = c(7, 5, 4, 2, 1, 1, 2, 1))
dt$variable <- factor(dt$variable, levels = c("Y", "X"))


p <- ggplot(dt, aes(x=category, y=value, fill=category)) +
  geom_bar(stat="identity", colour = "black") +
  coord_flip() +
  scale_fill_brewer(palette="Set3") +
  theme_bw() +
  theme(
legend.position = "none",
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.margin=unit(c(0.8,0.8,0.8,0.8),"cm"),
text = element_text(size=14)
  )
p
库(data.table)
图书馆(GG2)

dt我认为你的第二次尝试是正确的。最好像您那样创建一个新列
col

然后,诀窍是制作一个自定义颜色比例和颜色映射,它将值“black”显式映射到颜色“black”。然后可以将此自定义颜色贴图输入到
比例填充手册

这看起来像你想要的结果吗

库(data.table)
图书馆(GG2)
图书馆(RColorBrewer)

dt我认为你的第二次尝试是正确的。最好像您那样创建一个新列
col

然后,诀窍是制作一个自定义颜色比例和颜色映射,它将值“black”显式映射到颜色“black”。然后可以将此自定义颜色贴图输入到
比例填充手册

这看起来像你想要的结果吗

库(data.table)
图书馆(GG2)
图书馆(RColorBrewer)
dt
dt$col <- ifelse(dt$variable == "Y", "black", dt$category)
dt$col <- factor(dt$col, levels = c("black","A", "B", "C", "D"))

p <- ggplot(dt, aes(x=category, y=value, fill=col)) +
  geom_bar(stat="identity", colour = "black") +
  coord_flip() +
  scale_fill_brewer(palette="Set3") +
  theme_bw() +
  theme(
legend.position = "none",
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
plot.margin=unit(c(0.8,0.8,0.8,0.8),"cm"),
text = element_text(size=14)
  )
p