Câu hỏi Gradient của n màu sắc khác nhau, từ màu 1 và màu 2


Tôi thường làm việc với ggplot2 làm cho gradient tốt đẹp (Nhấn vào đây để xem ví dụ). Tôi có nhu cầu làm việc ở cơ sở và tôi nghĩ scales có thể được sử dụng ở đó để tạo ra các gradient màu cũng nhưng tôi bị đánh dấu một cách nghiêm trọng. Mục tiêu cơ bản là tạo ra một bảng màu của n màu sắc từ x màu đến màu y. Các giải pháp cần phải làm việc trong cơ sở mặc dù. Đây là điểm khởi đầu nhưng không có chỗ nào để nhập n.

 scale_colour_gradientn(colours=c("red", "blue"))

Tôi biết rõ về:

brewer.pal(8, "Spectral") 

từ RColorBrewer. Tôi đang tìm kiếm nhiều hơn cho cách tiếp cận tương tự như cách ggplot2 xử lý gradient mà nói rằng tôi có hai màu sắc và tôi muốn 15 màu sắc trên đường đi. Làm thế nào tôi có thể làm điều đó?


76
2017-11-12 23:16


gốc


Tôi nghĩ bạn cần quy mô gói; mới nhất ggplot2 các phiên bản phụ thuộc vào điều này cho mã cơ bản. I E. bạn không cần ggplot2 để sử dụng cân, bạn chỉ cần quy mô gói. Không có ý tưởng làm thế nào các chức năng trong quy mô hoạt động mặc dù :-) - Gavin Simpson


Các câu trả lời:


colorRampPalette có thể là bạn của bạn ở đây:

colfunc <- colorRampPalette(c("black", "white"))
colfunc(10)
# [1] "#000000" "#1C1C1C" "#383838" "#555555" "#717171" "#8D8D8D" "#AAAAAA"
# [8] "#C6C6C6" "#E2E2E2" "#FFFFFF"

Và chỉ để cho thấy nó hoạt động:

plot(rep(1,10),col=colfunc(10),pch=19,cex=3)

enter image description here


125
2017-11-12 23:21



+1 bị đánh bại bởi 8 giây! - mnel
@mnel - rút tiền thắng! ;-) - thelatemail
Nó thật đẹp. - Tyler Rinker
Lưu ý rằng nếu bạn đặc biệt say mê với bảng màu có sẵn, ví dụ: brewer.pal(8, "Spectral"), bạn có thể cho kết quả vector màu sắc colorRampPalette để tạo nhiều màu sắc hơn dọc theo đoạn đường nối đó. Ví dụ: colorRampPalette(brewer.pal(8, "Spectral")). - jbaums
Điều gì về màu sắc với các đường chéo hoặc hình dạng trong khối? @thelatemail - user3631848


Chỉ cần mở rộng câu trả lời trước colorRampPalettecó thể xử lý nhiều hơn hai màu.

Vì vậy, đối với một loại "bản đồ nhiệt" mở rộng hơn, bạn có thể nhìn thấy ....

colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue"))
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)

Hình ảnh kết quả:

enter image description here


38
2018-05-29 15:41



tôi cũng có thể chỉ định các đường chéo hoặc hình dạng trong màu sắc không? @jsol - user3631848
Tôi thích bảng màu này nhưng có quá nhiều màu xanh lá cây và rất ít màu vàng. Có cách nào để khắc phục điều này? - Herman Toothrot


Hãy thử những điều sau đây:

color.gradient <- function(x, colors=c("red","yellow","green"), colsteps=100) {
  return( colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ] )
}
x <- c((1:100)^2, (100:1)^2)
plot(x,col=color.gradient(x), pch=19,cex=2)

enter image description here


11
2018-02-26 16:04





Câu trả lời ở trên là hữu ích nhưng trong đồ thị, rất khó để phân biệt giữa các gradient đen tối hơn. Một phương án mà tôi tìm thấy là sử dụng các độ dốc của các màu xám như sau

palette(gray.colors(10, 0.9, 0.4))
plot(rep(1,10),col=1:10,pch=19,cex=3))

Thông tin thêm về thang màu xám đây. 

Thêm 

Khi tôi sử dụng mã ở trên cho các màu khác nhau như màu xanh và đen, các độ dốc không rõ ràng. heat.colors() có vẻ hữu ích hơn.

Tài liệu này có thông tin và tùy chọn chi tiết hơn. pdf


6
2017-09-24 11:30



Tôi nghĩ rằng câu trả lời này là tốt hơn cho màu đen sang màu trắng nhưng không thể nói chung với màu sắc. Cảm ơn bạn đã thêm thông tin có giá trị này. +1 - Tyler Rinker
Đã thêm một liên kết cung cấp các tùy chọn tốt hơn cho màu sắc và màu sắc làm việc trong cả hai màu sắc và B & W. - Anusha
Liên kết tốt đẹp! Rất thông tin. - Tyler Rinker
Có bản cập nhật cho liên kết này hay không .. Tính đến 1/2015, nó đã bị hỏng. - David DelMonte
@DavidDelMonte - web.archive.org/web/20141111182737/http://www.stat.tamu.edu/… thường xuyên kiểm tra archive.org. - thelatemail