Ich suche nach einer Möglichkeit, einen Farbverlauf zwischen zwei Werten zu strecken und die Legende zu beschriften, unabhängig vom Bereich der Datenwerte im Dataset. Gibt es im Wesentlichen ein funktionales Äquivalent zu ylim()
für Farbverläufe?ggplot skaliert Farbverlauf außerhalb des Datenbereichs
Bei Code, der zwischen -1 und 1 typischerweise az Wert Plots, kann ich plotten und einen Gradienten kennzeichnen, wenn die Pausen im Datenbereich sind:
require(ggplot2)
#generator from http://docs.ggplot2.org/current/geom_tile.html
pp <- function (n,r=4) {
x <- seq(-r*pi, r*pi, len=n)
df <- expand.grid(x=x, y=x)
df$r <- sqrt(df$x^2 + df$y^2)
df$z <- cos(df$r^2)*exp(-df$r/6)
df
}
t <- pp(30)
summary(t)
b <- c(-.5,0,.5)
p <- ggplot(data=t,aes(x=x,y=y))+
geom_tile(aes(fill=z))+
scale_fill_gradientn(colours=c("navyblue","darkmagenta","darkorange1"),breaks=b,labels=format(b))
try(ggsave(plot=p,filename=<somefile.png>,height=3,width=4))
Aber wenn ich das ändern bricht auf Werte außerhalb des beobachteten Bereichs, die Farbverlaufsfarbe scheint sich nicht anzupassen und die Verlaufsbeschriftungen erscheinen nicht.
b <- c(-3,0,3)
Ich denke, ich versuche etwas ähnliches zu erreichen, aber mit dieser Lösung versagt. Ich habe eine Reihe von Datensätzen, bei denen die Werte in begrenzten Bereichen liegen, aber theoretisch können sie zwischen 0 und -100 (dB) liegen. scale_fill_gradient (low = "white", high = "red") ist in Ordnung, aber ich kann die Datensätze nicht visuell vergleichen. scale_fill_gradient (niedrig = "weiß", hoch = "rot", limits = c (0, -100), guide = "legende", limits = c (0, -100), breaks = b, etiketten = format (c (0, -100)) stellt nicht die Legende dar. Ich bin ratlos. – MartinT