R Bild-Funktion in R
Ich bin mit der angehängten Bild-Funktion in R. bevorzuge ich diese als zu widersetzen, heatmap für die Geschwindigkeit, da ich es für sehr großen Matrizen (~ 400000 400).
Das problem in meiner Funktion, ist der dynamische Bereich für die Farbpalette, es ist nur blau und gelb in meinem Fall. Ich habe versucht, einige änderungen an der colorramp Linie, aber keiner gab mir die gewünschte Ausgabe.
Die Letzte Farbe ramp option, versuchte ich mit einem schönen Paket in R genannt ColorRamps, die angemessene Ergebnisse:
library("colorRamps")
ColorRamp = blue2green2red(400)
ColorLevels <- seq(min, max, length=length(ColorRamp))
Ist allerdings noch nicht so flexibel wie matlab Farbverlauf Optionen.
Ich bin nicht sehr vertraut, wie zu machen es besser Aussehen und mit mehr Reichweite, wie auf dem Foto angebracht.
Bitte informieren Sie mich, wenn es wäre möglich, mein Bild zu ändern-Funktion zu machen suchen mein Bild wie das auf dem Foto.
Die R-Funktion verwende ich für das zeichnen von Bildern mit raster = TRUE for speed ist wie folgt:
# ----- Define a function for plotting a matrix ----- #
myImagePlot <- function(x, filename, ...){
dev = "pdf"
#filename = '/home/unix/dfernand/test.pdf'
if(dev == "pdf") { pdf(filename, version = "1.4") } else{}
min <- min(x)
max <- max(x)
yLabels <- rownames(x)
xLabels <- colnames(x)
title <-c()
# check for additional function arguments
if( length(list(...)) ){
Lst <- list(...)
if( !is.null(Lst$zlim) ){
min <- Lst$zlim[1]
max <- Lst$zlim[2]
}
if( !is.null(Lst$yLabels) ){
yLabels <- c(Lst$yLabels)
}
if( !is.null(Lst$xLabels) ){
xLabels <- c(Lst$xLabels)
}
if( !is.null(Lst$title) ){
title <- Lst$title
}
}
# check for null values
if( is.null(xLabels) ){
xLabels <- c(1:ncol(x))
}
if( is.null(yLabels) ){
yLabels <- c(1:nrow(x))
}
layout(matrix(data=c(1,2), nrow=1, ncol=2), widths=c(4,1), heights=c(1,1))
# Red and green range from 0 to 1 while Blue ranges from 1 to 0
ColorRamp <- rgb( seq(0,1,length=256), # Red
seq(0,1,length=256), # Green
seq(1,0,length=256)) # Blue
ColorLevels <- seq(min, max, length=length(ColorRamp))
# Reverse Y axis
reverse <- nrow(x) : 1
yLabels <- yLabels[reverse]
x <- x[reverse,]
# Data Map
par(mar = c(3,5,2.5,2))
image(1:length(xLabels), 1:length(yLabels), t(x), col=ColorRamp, xlab="",
ylab="", axes=FALSE, zlim=c(min,max), useRaster=TRUE)
if( !is.null(title) ){
title(main=title)
}
# Here we define the axis, left of the plot, clustering trees....
#axis(BELOW<-1, at=1:length(xLabels), labels=xLabels, cex.axis=0.7)
# axis(LEFT <-2, at=1:length(yLabels), labels=yLabels, las= HORIZONTAL<-1,
# cex.axis=0.7)
# Color Scale (right side of the image plot)
par(mar = c(3,2.5,2.5,2))
image(1, ColorLevels,
matrix(data=ColorLevels, ncol=length(ColorLevels),nrow=1),
col=ColorRamp,
xlab="",ylab="",
xaxt="n", useRaster=TRUE)
layout(1)
if( dev == "pdf") {
dev.off() }
}
# ----- END plot function ----- #
- nur resample diese für die Auswertung effizient, dass ist viel zu viel detail für ein Bild
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie definieren eine Neigung in
colorRampPalette
. Habe ich auch angepasst, die Funktion zu definieren, die Anzahl der Schritte zwischen den Farbencolor.palette
:Hier ist ein Beispiel (die ich gequetscht habe die Anzahl der Schritte zwischen cyan und gelb):
Auch, wenn Sie interessiert sind, Ich schrieb eine Funktion, dass Parzellen mit einer Farbskala und verwendet die gleichen Argumente wie
image
. Wenn Sie Ihr Grundstück layout korrekt, dies wäre auch eine Möglichkeit zum schnellen Plotten von Matrizen und den entsprechenden Farbskala.