Farbverlauf von n colors von Farbe 1 und Farbe 2

Ich arbeite oft mit ggplot2 , was Gradienten schön macht ( klicken Sie hier für ein Beispiel ). Ich muss in der Basis arbeiten und ich denke, dass scales verwendet werden können, um Farbverläufe zu erzeugen, aber ich bin ziemlich daneben. Das grundlegende Ziel ist die Erzeugung einer Palette von n colors, die von x Farbe zu y Farbe reicht. Die Lösung muss jedoch in der Basis funktionieren. Dies war ein Ausgangspunkt, aber es gibt keinen Ort, um ein n einzugeben.

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

Ich bin mir bewusst:

 brewer.pal(8, "Spectral") 

von RColorBrewer . Ich suche eher nach dem Ansatz, der ähnlich ist wie ggplot2 mit Farbverläufen, die sagen, dass ich diese zwei colors habe und ich 15 colors auf dem Weg haben möchte. Wie kann ich das machen?

colorRampPalette könnte hier dein Freund sein:

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

Und nur um zu zeigen, dass es funktioniert:

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

Bildbeschreibung hier eingeben

colorRampPalette die vorherige Antwort zu colorRampPalette kann colorRampPalette mehr als zwei colors verarbeiten.

Also für eine erweiterte “heat map” aussehen können Sie ….

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

Das resultierende Bild:

Bildbeschreibung hier eingeben

Versuche Folgendes:

 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) 

Bildbeschreibung hier eingeben

Die obige Antwort ist nützlich, aber in Graphen ist es schwierig, zwischen dunkleren Farbverläufen von Schwarz zu unterscheiden. Eine Alternative, die ich gefunden habe, ist die Verwendung von Graustufengradienten wie folgt

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

Weitere Informationen zur Grauskala finden Sie hier.

Hinzugefügt

Wenn ich den obigen Code für verschiedene colors wie blau und schwarz verwendete, waren die Gradienten nicht so klar. heat.colors() scheint nützlicher zu sein.

Dieses Dokument enthält detailliertere Informationen und Optionen. pdf