widziałem nieco podobne do tego pytania, ale chciałbym zapytać moje konkretne pytanie jak bezpośrednio, jak tylko mogę:Transform skalę kolorów, ale zachować piękny legendę z ggplot2
Mam wykres punktowy z zmienna „z” zakodowane w skali barw:
library(ggplot2)
myData <- data.frame(x = rnorm(1000),
y = rnorm(1000))
myData$z <- with(myData, x * y)
badVersion <- ggplot(myData,
aes(x = x, y = y, colour = z))
badVersion <- badVersion + geom_point()
print(badVersion)
która produkuje to:
Jak widać, gdyż zmienna „z” ma rozkład normalny, bardzo niewielu z punktów są kolorowe z "skrajne" barwy rozkładu. Tak właśnie powinno być, ale jestem zainteresowany uwypukleniem różnicy. Jednym ze sposobów, aby to zrobić byłoby użyć:
betterVersion <- ggplot(myData,
aes(x = x, y = y, colour = rank(z)))
betterVersion <- betterVersion + geom_point()
print(betterVersion)
która produkuje to:
Stosując Rank() do zmiennej „Z”, otrzymuję dużo większy nacisk na niewielkie różnice w ramach " z "zmienna. Można sobie wyobrazić użycie jakiejkolwiek transformacji tutaj, zamiast rangi, ale masz pomysł.
Moje pytanie jest w istocie, co jest najprostszym sposobem, lub najbardziej "prawdziwym sposobem ggplot2", uzyskania legendy w oryginalnych jednostkach (jednostki z, w przeciwieństwie do rangi z), przy jednoczesnym zachowaniu przekształcona wersja kolorowych punktów?
Mam przeczucie, że w jakiś sposób używa on funkcji rescaler(), ale nie jest dla mnie jasne, jak używać funkcji rescaler() z dowolnymi przekształceniami itp. Ogólnie rzecz biorąc, bardziej przejrzyste przykłady byłyby użyteczne.
Z góry dziękuję za poświęcony czas.
+1 za odtwarzalny przykład, jasny cel i interesujące pytanie wizualizacyjne. –