2014-10-09 16 views
5

Sử dụng scale_colour_manual(), người ta có thể chọn các màu cụ thể từ RColorBrewer để sử dụng làm giá trị màu không?Chọn các màu riêng lẻ từ bảng màu RColorBrewer dưới dạng giá trị scale_colour_manual() trong ggplot2

Ví dụ, trong:

scale_colour_manual(breaks=c("A","B","C","D","E"), 
    values=c("green","orange","blue","pink","yellow")) 

Tôi muốn sử dụng màu đầu tiên từ bảng scale_colour_brewer(type = "qual", palette = 7) thay vì, sau đó màu sắc thứ tư "xanh" của bảng scale_colour_brewer(type = "qual", palette = 2) thay vì "màu da cam", và Sớm.

Trả lời

17

Tôi thường làm như sau,

library(RColorBrewer) 
my_palette = c(brewer.pal(5, "Set1")[c(1,3,4,5)], brewer.pal(5, "Pastel1")[c(2,5,1,3)]) 
#grid::grid.raster(my_palette, int=F) 

scale_colour_discrete = function(...) scale_colour_manual(..., values = palette()) 

dsamp <- diamonds[sample(nrow(diamonds), 1000), ] 
(p <- qplot(carat, price, data = dsamp, colour = clarity)) # default palette 

palette(my_palette) 
p # custom colors 
+0

này trông Batiste tuyệt vời, nhưng tôi có một thời gian khó khăn tích hợp các ý tưởng thành mã của tôi. Tôi có nên sử dụng "scale_colour_discrete = function (...) scale_colour_manual (..., values ​​= palette())" thay vì "scale_colour_manual (break = c (" r "," á/b "," ő/é ", "w/s (0.3)", "w/s (0.2)"), giá trị = c ("xanh lục", "cam", "xanh dương", "hồng", "vàng")) "? – Rodolphe

+2

hãy thử nghiệm và sử dụng những gì phù hợp nhất với bạn. Ý tưởng là xác định vectơ màu sắc ưa thích của riêng bạn và cung cấp chúng dưới dạng giá trị cho scale_colour_manual. Tôi sử dụng thủ thuật palette() để mã của tôi chạy bất kể tôi có quên bao gồm các màu tùy chỉnh của mình trong tập lệnh hay không. – baptiste

+0

Điều này thêm chút thông tin đã làm các trick, cảm ơn rất nhiều! – Rodolphe

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