2014-05-09 13 views
17

Tôi có một thư mục chứa các file csv, đều có hai cột dữ liệu ví dụ:Làm cách nào để thay đổi tên nhãn, đánh dấu và màu sắc của ô x-trục bằng cách sử dụng R ggplot?

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 

Tôi đang sử dụng mã R sau đây để tạo ra boxplots:

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() 
} 

Bây giờ tôi muốn thay đổi màu sắc của ô vuông để phù hợp với nhãn màu x trục tương ứng của chúng. Tôi cũng muốn thay đổi tên của các nhãn trục x, và cũng có thể đặt hàng của họ. Có cách nào để làm điều này bằng cách sử dụng ggplot hoặc qplot?

Trả lời

32

Building tắt của câu trả lời @ bóng của, dưới đây là cách bạn có thể tự thay đổi các nhãn trục x. Tôi cũng đã ném trong một vài thay đổi khác mà giúp cải thiện giao diện của đồ thị và truyền thuyết:

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() 

Thêm tùy chọn labels đến lớp scale_x_discrete của cốt truyện cho phép bạn thay đổi các nhãn trục. Thêm labels vào cả hai scale_fill_manualscale_color_manual cho phép bạn thay đổi nhãn chú giải. Thêm name cho cả hai cho phép bạn thay đổi tiêu đề chú giải. Cuối cùng, tôi đã thêm theme_bw() vào ô để làm nền trắng và thêm đường viền xung quanh ô. Hy vọng rằng sẽ giúp!

enter image description here

6

Có, bạn có thể thực hiện việc này. Sử dụng scale_color_manual, scale_fill_manualscale_x_discrete như sau:

# 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 
+0

Điều này có tác dụng cho việc gán màu chính xác cho ô và thay đổi thứ tự của chúng. Tuy nhiên, tôi cũng muốn thay đổi tên của các nhãn trục (ví dụ: thay đổi "màu cam" thành "hESC") và để điều này được phản ánh trong chú giải. – user2639056

+0

@ user2639056 Tôi đã trả lời câu hỏi của bạn bên dưới. – rmbaughman

Các vấn đề liên quan