Как изменить имена ярлыков меток x, порядок и цвет коробки с помощью R ggplot?
У меня есть папка, содержащая файлы csv, каждая с двумя столбцами данных, например:
0,red
15.657,red
0,red
0,red
4.429,red
687.172,green
136.758,green
15.189,red
0.152,red
23.539,red
0.348,red
0.17,blue
0.171,red
0,red
61.543,green
0.624,blue
0.259,red
338.714,green
787.223,green
1.511,red
0.422,red
9.08,orange
7.358,orange
25.848,orange
29.28,orange
Я использую следующий код R для создания ящиков:
files <- list.files(path="D:/Ubuntu/BoxPlots/test/", pattern=NULL, full.names=F, recursive=FALSE)
files.len<-length(files)
col_headings<-c("RPKM", "Lineage")
for (i in files){
i2<-paste(i,"png", sep=".")
boxplots<-read.csv(i, header=FALSE)
names(boxplots)<-col_headings
png(i2)
bplot<-ggplot(boxplots, aes(Lineage, RPKM)) + geom_boxplot(aes(fill=factor(Lineage))) + geom_point(aes(colour=factor(Lineage)))
print(bplot)
graphics.off()
}
Теперь я хочу изменить цвет ящиков, чтобы они соответствовали соответствующим цветовым ярлыкам оси х. Я также хочу изменить имена меток оси x, а также их порядок. Есть ли способ сделать это с помощью ggplot или qplot?
Ответы
Ответ 1
Создание ответа @shadow, здесь, как вы можете вручную изменить метки оси x. Я также добавил несколько других изменений, которые помогают улучшить внешний вид графика и легенды:
colorder <- c( "green", "orange", "red", "blue")
bplot<-ggplot(temp, aes(Lineage, RPKM)) +
geom_boxplot(aes(fill=factor(Lineage))) +
geom_point(aes(colour=factor(Lineage))) +
scale_color_manual(breaks=colorder, # color scale (for points)
limits=colorder,
values=colorder,
labels=c("hESC1","hESC2","hESC3","hESC4"),
name="Group") +
scale_fill_manual(breaks=colorder, # fill scale (for boxes)
limits=colorder,
values=colorder,
labels=c("hESC1","hESC2","hESC3","hESC4")
name="Group") +
scale_x_discrete(limits=colorder,labels=c("hESC1","hESC2","hESC3","hESC4")) +
theme_bw()
Добавление опции labels
к слою scale_x_discrete
графика позволяет вам изменить метки осей. Добавление labels
в оба scale_fill_manual
и scale_color_manual
позволяет вам менять метки легенды. Добавление name
в оба позволяет изменить заголовок легенды. Наконец, я добавил theme_bw()
к сюжету, чтобы сделать белый фон и добавить границу вокруг графика. Надеюсь, что это поможет!
![enter image description here]()
Ответ 2
Да, вы можете это сделать. Используйте scale_color_manual
, scale_fill_manual
и scale_x_discrete
следующим образом:
# specify colors and order
colorder <- c( "green", "orange", "red", "blue")
bplot<-ggplot(boxplots, aes(Lineage, RPKM)) +
geom_boxplot(aes(fill=factor(Lineage))) +
geom_point(aes(colour=factor(Lineage))) +
scale_color_manual(breaks=colorder, # color scale (for points)
limits=colorder,
values=colorder) +
scale_fill_manual(breaks=colorder, # fill scale (for boxes)
limits=colorder,
values=colorder) +
scale_x_discrete(limits=colorder) # order of x-axis