Poszukuję sposobu na rozciągnięcie gradientu kolorów między dwiema wartościami i oznaczenie legendy, niezależnie od zakresu wartości danych w zbiorze danych. Zasadniczo istnieje funkcjonalny odpowiednik ylim()
dla gradientów kolorów?Gradient koloru skali ggplot do zakresu spoza zakresu danych
danego kodu, które działki wartość az typowo od -1 do 1, mogę wykreślić i oznakować gradient jeśli przerwy są w zakresie danych:
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))
Ale kiedy zmienić łamie się do wartości spoza obserwowanego zakresu, kolory gradientu nie wydają się korygować, a etykiety gradientu nie pojawiają się.
b <- c(-3,0,3)
Myślę, że próbuję osiągnąć coś podobnego, ale nie udaje się z tym rozwiązaniem. Mam wiele zestawów danych, w których wartości są w ograniczonych zakresach, ale teoretycznie mogą wynosić od 0 do -100 (dB). wykonanie scale_fill_gradient (low = "white", high = "red") jest w porządku, ale nie pozwala mi wizualnie porównać zestawów danych. scale_fill_gradient (low = "biały", wysoki = "czerwony", ograniczenia = c (0, -100), przewodnik = "legenda", ograniczenia = c (0, -100), przerwy = b, etykiety = format (c (0, -100)) nie tworzy legendy. – MartinT