2017-10-13 2 views
1

In R habe ich eine Wolke von Daten um Null, und einige Daten um 1, ich möchte meine Wärme Farben "rescale", um niedrigere Zahlen zu unterscheiden.Dies muss in einem Regenbogen Weg getan werden, ich Ich will nicht "diskrete Farben". Ich habe versucht mit Pausen in image.plot, aber es funktioniert nicht.Neuskalierung Farbpalette in

image.plot(X,Y,as.matrix(mymatrix),col=heat.colors(800),asp=1,scale="none") 

Ich habe versucht:

lowerbreak=seq(min(values),quantile2,len=80) 
    highbreak=seq(quantile2+0.0000000001,max(values),len=20) 
    break=c(lowerbreak,highbreak) 
    ii <- cut(values, breaks = break, 
      include.lowest = TRUE) 

    colors <- colorRampPalette(c("lightblue", "blue"))(99)[ii] 
+0

Vielleicht '? ColorRamp' zu interpolieren Farben. –

+0

Ich habe versucht, aber ich bin nicht in der Lage zu verstehen, wie kann ich tun, um niedrigen Wert zu unterscheiden – gdlzzzz

Antwort

1

Wenn colorRampPalette verwenden, können Sie das bias Argument festlegen niedrig (oder hoch) Werte zu betonen.

So etwas wie colorRampPalette(heat.colors(100),bias=3) führt dazu, dass die 'Rampe' auf die untere fokussiert wird, was sie visuell besser unterscheidbar macht.

+0

Ich muss eine zu hohe Vorspannung, die die Farbe Rampe alle gelb ohne Schatten machen – gdlzzzz

2

Hier ist ein Ansatz mit der "Squash" -Bibliothek. Mit makecmap() geben Sie Ihre Farbwerte und -pausen an, und Sie können auch angeben, dass die Protokollierung unter Verwendung des Parameters base protokolliert werden soll. Es ist ein bisschen komplex, aber gibt Ihnen granulare Kontrolle. Ich verwende es, um verzerrte Daten zu kolorieren, wo ich mehr Definition im "unteren Ende" benötige.

Um die Regenbogen-Palette zu erreichen, habe ich die integrierte "Jet" -Farbfunktion verwendet, aber Sie können jeden Farbsatz verwenden - ich gebe ein Beispiel für die Erstellung einer Graustufenrampe mit "colorRampPalette".

Egal welche Rampe Sie verwenden, es wird etwas mit dem base Wert gespielt, um Ihre Daten zu optimieren.

install.packages("squash") 
library("squash") 

#choose your colour thresholds - outliers will be RED 
minval=0 #lowest value to get a colour 
maxval=2.0 #highest value to get a colour 
n.cols=100 #how many colours do you want in your palette? 
col.int=1/n.cols 

#create your palette 
colramp=makecmap(x=seq(minval,maxval,col.int), 
       n=n.cols, 
       breaks=prettyLog, 
       symm=F, 
       base=10,#to give ramp a log(base) stretch 
       colFn=jet, 
       col.na="red", 
       right=F, 
       include.lowest=T) 

# If you don't like the colFn options in "makecmap", define your own! 
# Here's an example in greyscale; pass this to "colFn" above 
user.colfn=colorRampPalette(c("black","white"))