Я использую ggtern для построения большого набора данных в форме третичного сюжета (см. Пример ниже).Построение результата kde в ggtern
До определенного размера данных все было идеально, как я использовал geom_density_tern(). Поскольку я хочу визуализировать гораздо более сложный набор данных, загружая все это, а рендеринг с ggplot становится невозможным (ограничение на стороне памяти). Я подумал, что, возможно, может возникнуть обходное решение, введя в расчет результат вычисления матрицы kde2d отдельно. И вот где я застрял. Я хотел бы знать, можно ли это сделать в ggtern?
В любом случае я добавляю минимальный случай структуры данных и чертежей, которые я использую в данный момент.
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
Эти дополнительные линии воспроизводят график плотности в тройной системе координации:
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")
И получить этот график:
Спасибо заранее за любую помощь!
Правильно ли я понимаю, что вы можете назвать 'kde2', но из памяти' ggtern + geom_density_tern'? – tonytonov
Я имел в виду, что в моем «реальном» анализе у меня есть огромный фрейм данных, который очень большой для geom_density_tern для обработки за один раз. Я решил загрузить в geom_density_tern предварительно рассчитанную матрицу kde2. Это более понятно? – Ludwik