Renk 1 ve renk 2 arasında değişen n renk gradyanı


108

Genellikle ggplot2gradyanları güzel kılan onunla çalışırım ( bir örnek için burayı tıklayın ). Temelde çalışma ihtiyacım var ve scalesorada renk gradyanları oluşturmak için de kullanılabileceğini düşünüyorum , ancak nasıl yapılacağı konusunda ciddi şekilde işaretim yok. Temel amaç, x renginden y rengine kadar değişen n renkten oluşan bir palet oluşturmaktır. Çözümün temelde çalışması gerekiyor. Bu bir başlangıç ​​noktasıydı, ancak n girilecek yer yok.

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

Şunların çok iyi farkındayım:

brewer.pal(8, "Spectral") 

itibaren RColorBrewer. ggplot2Bu iki renge sahip olduğumu ve yol boyunca 15 renk istediğimi söyleyen degradeleri nasıl işlediğine benzer bir yaklaşım arıyorum . Bunu nasıl yapabilirim?


1
Tartı paketine ihtiyacınız olduğunu düşünüyorum ; en son ggplot2 sürümleri, temel alınan kod için buna bağlıdır. Yani terazileri kullanmak için ggplot2'ye ihtiyacınız yok , sadece terazi paketine ihtiyacınız var . Ölçeklerdeki işlevlerin nasıl çalıştığı hakkında hiçbir fikrim yok :-)
Gavin Simpson

1
baseÖzel olarak talep ettiğiniz için konu dışı , ancak colourvalues( ayrıca CRAN'da ) değerleri bir gradyana eşlemek için özellikle uygun buluyorum . Aynı zamanda oldukça hafiftir (bağlıdır Rcpp).
MichaelChirico

@MichaelChirico Konu dışı değil, kastettiğim, kullandığım paket gridden ziyade base (sanırım wordcloud) olarak yazıldığı için temel plotting kullanmam gerektiğiydi. Cevap olarak gönderebilir misin?
Tyler Rinker

Yanıtlar:


179

colorRampPalette burada arkadaşınız olabilir:

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

Ve sadece işe yaradığını göstermek için:

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

görüntü açıklamasını buraya girin


14
Önceden var olan bir palete özellikle hayranlık duyuyorsanız, örneğin brewer.pal(8, "Spectral"), elde edilen renk vektörünü colorRampPalettebu rampa boyunca daha fazla renk üretmesi için verebileceğinizi unutmayın. Örneğin: colorRampPalette(brewer.pal(8, "Spectral")).
jbaums

Bloktaki çapraz çizgiler veya şekillerdeki renk ne olacak? @thelatemail
user3631848

50

Sadece bir önceki cevaba genişletmek için colorRampPaletteikiden fazla renk işleyebilir.

Daha genişletilmiş bir "ısı haritası" türü için şunları yapabilirsiniz:

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

Ortaya çıkan görüntü:

görüntü açıklamasını buraya girin


Renkteki çapraz çizgileri veya şekilleri de belirtebilir miyim? @jsol
user3631848

Bu paleti beğendim ama çok fazla yeşil ve çok az sarı var. Bunu düzeltmenin bir yolu var mı?
Herman Toothrot

1
"Springgreen" veya "royalblue" gibi bir seçenek görmeyi beklemeyenler için ekleme. Kullanılabilen tüm renkler, şu komutu kullanarak bir liste olarak döndürülebilir: colours ().
jadki

20

Takip etmeyi dene:

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)

görüntü açıklamasını buraya girin


bu işlev R tabanına varsayılan olarak eklenmelidir!
Simon C.

7

Yukarıdaki cevap kullanışlıdır, ancak grafiklerde siyahın daha koyu gradyanlarını ayırt etmek zordur. Bulduğum bir alternatif, gri renk geçişlerini aşağıdaki gibi kullanmaktır.

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

Gri tonlama hakkında daha fazla bilgi burada.

Katma

Mavi ve siyah gibi farklı renkler için yukarıdaki kodu kullandığımda, gradyanlar o kadar net değildi. heat.colors()daha kullanışlı görünüyor.

Bu belge daha ayrıntılı bilgi ve seçeneklere sahiptir. pdf


2
Bu cevabın siyahtan beyaza üstün olduğunu düşünüyorum ama renkler için genelleştirilemez. Bu değerli bilgiyi eklediğiniz için teşekkür ederiz. +1
Tyler Rinker

Hem renkli hem de siyah beyaz çalışan renk gradyanları ve tonları için daha iyi seçenekler sunan bir bağlantı eklendi.
Anusha

@DavidDelMonte Dosyanın kaydedilmiş bir kopyasına sahip olabilirim, ancak güncellenmiş bağlantı yok. Yine de nereye yükleyeceğinizden emin değilim.
Anusha

2
@DavidDelMonte - web.archive.org/web/20141111182737/http://www.stat.tamu.edu/… her zaman önce archive.org'u kontrol edin.
posta
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.