Używam ggtern do wykreślenia dużego zbioru danych w postaci trzeciorzędnego wykresu (patrz poniżej przykład).Wykreślanie wyników kde w ggtern
Aż pewnego dane size wszystko było idealne, ponieważ używałem geom_density_tern(). Ponieważ chcę wizualizować znacznie bardziej skomplikowany zestaw danych ładujący go cały czas, a rendering z ggplot staje się niemożliwy (ograniczenie po stronie pamięci). Pomyślałem, że być może może istnieć obejście przez przypisanie wyniku macierzy kde2d obliczonej oddzielnie. I właśnie tam utknąłem. Chciałbym wiedzieć, czy można to zrobić w jakikolwiek sposób w ggtern?
W każdym razie dodam minimalny przypadek struktury danych i kreślenia, których używam w tej chwili.
require(ggplot2)
require(ggtern)
set.seed(1)
mydata <- data.frame(
x = runif(100, min = 0.25, max = 0.5),
y = runif(100, min = 0.1, max = 0.4),
z = runif(100, min = 0.5, max = 0.7))
plot <- ggtern() +
theme_bw() +
theme_hidetitles() +
geom_density_tern(data = mydata,
aes(x = x, y = y, z = z, alpha = ..level..),
size = 0.1, linetype = "solid", fill = "blue")+
geom_point(data = mydata,
aes(x = x, y = y, z = z), alpha = 0.8, size = 1)
plot
Te dodatkowe linie odtworzyć wykres gęstości w potrójnego systemu koordynacji:
library(MASS)
dataTern = transform_tern_to_cart(mydata$x,mydata$y,mydata$z)
dataTernDensity <- kde2d(x=dataTern$x, y=dataTern$y, lims = c(range(0,1), range(0,1)), n = 400)
image(dataTernDensity$x, dataTernDensity$y, dataTernDensity$z)
points(dataTern$x, dataTern$y, pch = 20, cex = 0.1)
segments(x0 = 0, y0 = 0, x1 = 0.5, y1 = 1, col= "white")
segments(x0 = 0, y0 = 0, x1 = 1, y1 = 0, col= "white")
segments(x0 = 0.5, y0 = 1, x1 = 1, y1 = 0, col= "white")
i uzyskaniu tego wykresu:
Z góry dzięki za wszelką pomoc!
Czy dobrze rozumiem, że można zadzwonić 'kde2', ale z pamięcią na' ggtern + geom_density_tern'? – tonytonov
Miałem na myśli to, że w mojej "prawdziwej" analizie mam ogromną ramkę danych, która jest daleko do dużej wartości dla geom_density_tern do obsługi za jednym razem. Myślałem o wczytaniu w geom_density_tern wcześniej obliczonej macierzy kde2. Czy jest to bardziej zrozumiałe? – Ludwik