Pertanyaan Gradien warna n mulai dari warna 1 dan warna 2


Saya sering bekerja dengan ggplot2 yang membuat gradien bagus (Klik disini untuk contoh). Saya harus bekerja di pangkalan dan saya pikir scales dapat digunakan di sana untuk membuat gradien warna juga tapi aku sangat melenceng pada bagaimana. Tujuan dasarnya adalah menghasilkan palet warna n yang berkisar dari x warna ke warna y. Solusinya perlu bekerja dalam basis sekalipun. Ini adalah titik awal tetapi tidak ada tempat untuk memasukkan n.

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

Saya sangat menyadari:

brewer.pal(8, "Spectral") 

dari RColorBrewer. Saya mencari pendekatan yang serupa dengan caranya ggplot2 menangani gradien yang mengatakan saya memiliki dua warna ini dan saya ingin 15 warna di sepanjang jalan. Bagaimana saya bisa melakukannya?


75
2017-11-12 23:16


asal


Jawaban:


colorRampPalette bisa jadi temanmu di sini:

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

Dan hanya untuk menunjukkannya berfungsi:

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

enter image description here


125
2017-11-12 23:21



Hanya untuk memperluas jawaban sebelumnya colorRampPalettedapat menangani lebih dari dua warna.

Jadi untuk tipe "peta panas" yang lebih luas, lihatlah Anda dapat ....

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

Gambar yang dihasilkan:

enter image description here


37
2018-05-29 15:41



Coba yang berikut ini:

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



Jawaban di atas berguna tetapi dalam grafik, sulit untuk membedakan antara gradien hitam yang lebih gelap. Salah satu alternatif yang saya temukan adalah menggunakan gradien warna abu-abu sebagai berikut

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

Info lebih lanjut tentang skala abu-abu sini. 

Ditambahkan 

Ketika saya menggunakan kode di atas untuk warna yang berbeda seperti biru dan hitam, gradiennya tidak begitu jelas. heat.colors() sepertinya lebih berguna.

Dokumen ini memiliki informasi dan opsi yang lebih rinci. pdf


6
2017-09-24 11:30