请参阅以下2 data.frames
:
df1 <- data.frame(var=letters[1:3],val=1:3)
df2 <- df1[-1,]
请注意,var
是data.frames
中的一个因素,而c
中的df2$var
水平位于df2$var
# [1] b c
# Levels: a b c
library
library(dplyr)
bind_rows(df1,df2,.id = "id") %>%
ggplot(aes(1,val,fill=var)) +
geom_bar(stat="identity",position="fill") +
facet_wrap(~id)
如果我使用刻面,我会让我的酒吧充满预期的颜色:
ggplot(df1,aes(1,val,fill=var)) + geom_bar(stat="identity",position="fill")
ggplot(df2,aes(1,val,fill=var)) + geom_bar(stat="identity",position="fill")
(抱歉,我目前无法上传图表)
但如果我想做两个单独的情节,我就不能保持相同的颜色主题。
p
我该如何解决这个问题?
答案 0 :(得分:1)
只需创建一个手动调色板,并告诉您的比例不要丢失缺失因子水平。
另请注意,geom_bar(position = "identity")
与geom_col()
相同;不妨用更短的记谱法。
library(ggplot2)
df1 <- data.frame(var=letters[1:3],val=1:3)
df2 <- df1[-1,]
pal <- c(a = "blue", b = "red", c = "gold")
ggplot(df1, aes(x = 1, y = val, fill = var)) +
geom_col(position = "fill") +
scale_fill_manual(values = pal, drop = F)
ggplot(df2, aes(x = 1, y = val, fill = var)) +
geom_col(position = "fill") +
scale_fill_manual(values = pal, drop = F)
由reprex package(v0.2.0)创建于2018-04-30。