Je veux tracer la projection de données à 3 dimensions sur leur Simplex en utilisant ggplot2. Je pensais pouvoir gérer la transformation sur les coordonnées cartésiennes à l'aide de C'est ce que j'ai essayé: p> Les suggestions sont appréciées. Merci beaucoup! P> P> coord_trans () code>, mais je ne sais pas comment le faire exactement.
7 Réponses :
Transformez-vous vous-même les données vous-même, puis en tracer: P> coord_trans code> ne fait pas ce que vous semblez penser que ça fait. Il transformera les coordonnées X et Y d'une parcelle déjà 2D, mais vous avez des données 3D.
simplex.y <- function(x) {
return( sqrt(0.75) * x[3] / sum(x) )
}
simplex.x <- function(x) {
return( (x[2] + 0.5 * x[3]) / sum(x) )
}
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 )
)
newDat <- data.frame(x = apply(x,1,simplex.x),
y = apply(x,1,simplex.y))
ggplot(newDat,aes(x = x,y = y)) +
geom_point()
La fonction ternaryplot dans le paquet VCD fait un bon travail de fabrication de parcelles ternaires classiques à partir de données non normalisées: p> p>
comme mmann1123 em> fort> en surbrillance, en utilisant ggtern , ce qui suit peut être atteint: avec le simple codeblock suivant: p>
Hy @nicholas! Pourriez-vous s'il vous plaît examiner votre réponse? Je ne suis pas capable de le reproduire ... theme_tern_bw code> est juste
theme_bw code> Je pense et les points sont présentés sous les bords (non terminés). Merci d'avance!
Bien sûr, c'est fait, c'était à partir d'une version antérieure, voir ci-dessus
Le package R TERNAIRE produit des parcelles ternaires à partir de matrices et de données.Fammes à l'aide des fonctions graphiques standard.
La parcelle ci-dessus est créée avec: P>
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 ) ) TernaryPlot() TernaryPoints(x, col='red')
En complétude, vous pouvez essayer le bon ancien ADE4 code> Emballage:
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(ade4)
triangle.plot(x)
La fonction triiax.plot () code>, à partir du package code> tractrix dessine également des parcelles ternaires:
Voir aussi Comment installer le package GGtern dans R