Facet barplot不尊重色值

时间:2017-08-02 15:03:25

标签: r bar-chart

我想要一个刻面的条形图。表示总值的条形必须为红色,其他条形为蓝色 总值由Desc1 =" - "表示。 我有以下代码:

#df contains the following data:                                                                                                        
#Year;Maingroup;Desc1 ;Desc2      ;Value
#2017;A               ;1        ;A1             ;10
#2017;A               ;2        ;A2             ;20
#2017;A               ;-        ;AT             ;30
#2017;B               ;10       ;B10            ;100
#2017;B               ;20       ;B20            ;200
#2017;B               ;-        ;BT             ;300                                                                                                    
#2017;C               ;11       ;C100           ;53
#2017;C               ;22       ;C200           ;54
#2017;C               ;-        ;CT             ;107

#add a new description                                                                                                                  
df <- df %>% unite (Oms,Desc1,Value,sep=' ',remove=FALSE)
#add color indication
df <- df %>% mutate(colv=(ifelse(Desc1=="-      ","Red","Blue")))
#sort into descending order
df <- df %>% arrange(desc(Value))
#plot horizontal barchart
ggplot(df, aes(x=Desc2,y=Value))+
geom_bar(position=position_dodge(),stat="identity",fill=df$colv)+
facet_grid(~Maingroup,scale="free")+
coord_flip()

但是R并没有以正确的方式为酒吧着色。 Wrong bar colors 我究竟做错了什么?

1 个答案:

答案 0 :(得分:0)

你必须在开始时在aes()中使用fill = colv,然后使用scale_fill_manual()来定义这样的颜色:

ggplot(df, aes(x=Desc2,y=Value, fill=colv))+
geom_bar(position=position_dodge(),stat="identity") +
scale_fill_manual(values = c("blue", "red")) +
facet_grid(~Maingroup,scale="free") +
coord_flip()