我有一组包含三个类别样本的数据。
使用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
答案 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