11
votes

Faire une parcelle ternaire

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 coord_trans () , mais je ne sais pas comment le faire exactement.

C'est ce que j'ai essayé: xxx < / Pré>

Les suggestions sont appréciées. Merci beaucoup!


7 Réponses :


1
votes

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.

Transformez-vous vous-même les données vous-même, puis en tracer: P>

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()


0 commentaires

6
votes

La fonction ternaryplot dans le paquet VCD fait un bon travail de fabrication de parcelles ternaires classiques à partir de données non normalisées: xxx

 Entrez la description de l'image ici


0 commentaires

1
votes

Utilisez la bibliothèque GGGtern que vous pouvez en lire ici. http://ggtern.com/


0 commentaires

17
votes

comme mmann1123 en surbrillance, en utilisant ggtern , ce qui suit peut être atteint:

 sortie

avec le simple codeblock suivant: xxx


2 commentaires

Hy @nicholas! Pourriez-vous s'il vous plaît examiner votre réponse? Je ne suis pas capable de le reproduire ... theme_tern_bw est juste theme_bw 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



1
votes

Le package R TERNAIRE produit des parcelles ternaires à partir de matrices et de données.Fammes à l'aide des fonctions graphiques standard.

 TERNAIRE TERNAIRE CRAINEMENT AVEC LE TERNAIRE TERNAIRE P>

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')


0 commentaires

1
votes

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)


0 commentaires

1
votes

La fonction triiax.plot () , à partir du package tractrix dessine également des parcelles ternaires: xxx


0 commentaires