如何更改使用ggplot2获得的图表栏的颜色条

时间:2018-04-18 21:28:13

标签: r ggplot2

我有一组包含三个类别样本的数据。

使用ggplot2可以获得良好的条形图表示。

但是,我还需要按颜色更改每个类别的颜色,如darkorange2,dodgerblue2和firebrick2。

我尝试使用 scale_fill_manual 这个函数,但似乎总是会出错。

我目前没有改变颜色的情节的一个例子是:

require(ggplot2)
d.f<-data.frame(v=c("a","a","b","c","c"),x=sample(LETTERS,5),y=10+runif(5))

pbar <- ggplot(data=d.f, aes(x=x, y=y,fill=v)) +  
         geom_bar(stat="identity",width=0.8) + 
         theme(text= element_text(size=16, family = "Times New Roman"),
               axis.text.x = element_text(angle = 90,hjust=1, vjust = 0, face="italic", colour="black"),
               axis.text.y = element_text(colour="black")) +  
         coord_cartesian(ylim=c(0.0,12)) + 
         scale_y_continuous(expand=c(0,0)) +  
         theme(aspect.ratio = 0.8) + 
         xlab("Sample")+ylab("Abundance")

pbar<-pbar+theme(axis.title=element_text(size=18, face="bold"))
pbar<-pbar+theme(axis.text=element_text(size=16))
pbar

enter image description here

1 个答案:

答案 0 :(得分:1)

只需初始化将v中的所有值映射为颜色的向量,并在scale_fill_manual中使用它:

require(ggplot2)
d.f<-data.frame(v=c("a","a","b","c","c"),x=c("A","C","T","S","G"),y=10+runif(5))
cols <- c("a"="darkorange2","b"="dodgerblue2", "c"="firebrick2")

pbar <- ggplot(data=d.f, aes(x=x, y=y,fill=v)) +  
  geom_bar(stat="identity",width=0.8) + 
  theme(text= element_text(size=16, family = "Times New Roman"),
        axis.text.x = element_text(angle = 90,hjust=1, vjust = 0, face="italic", colour="black"),
        axis.text.y = element_text(colour="black")) +  
  coord_cartesian(ylim=c(0.0,12)) + 
  scale_y_continuous(expand=c(0,0)) +  
  theme(aspect.ratio = 0.8) + 
  xlab("Sample")+ylab("Abundance") +
  scale_fill_manual(values = cols)

pbar<-pbar+theme(axis.title=element_text(size=18, face="bold"))
pbar<-pbar+theme(axis.text=element_text(size=16))
pbar

enter image description here