Я хочу построить проекцию трехмерных данных на их симплекс с помощью ggplot2. Я думал, что смогу управлять преобразованием в декартовых координатах с помощью coord_trans()
, но не знаю, как это сделать.
Это то, что я пробовал:
simplex.y <- function( x1, x2, x3 ) {
return( sqrt(0.75) * x3 / (x1+x2+x3) )
}
simplex.x <- function( x1, x2, x3 ) {
return( (x2 + 0.5 * x3) / (x1+x2+x3) )
}
x <- data.frame(
x1 = c( 0, 0, 1, 0.1, 0.6, 0.2 ),
x2 = c( 0, 1, 0, 0.3, 0.2, 0.8 ),
x3 = c( 1, 0, 0, 0.6, 0.2, 0.0 )
)
require(ggplot2)
ggplot( data = x, aes( x = c(x1, x2, x3), y = c(x1, x2, x3)) ) +
geom_point() +
coord_trans( x="simplex.x", y="simplex.y" )
Любые предложения приветствуются. Большое спасибо!