2016-04-07 6 views
1

私は正と負の値を含むdata.frameからプロットをしようとしていますが、私はすべての点をプロットできません。誰かが知っている、すべての点をプロットするコードを適応させることが可能な場合は?なぜggternはいくつかの点をプロットしないのですか?

example = data.frame(X1=c(-1,-0.5,1),X2=c(-1,0.7,1),X3=c(1,-0.5,2)) 
ggtern(data=example, aes(x=X1,y=X2,z=X3)) + geom_point() 

enter image description here

+2

私はあなた(サンプル)データは三元プロットを構築するためのrequirmentsを満たしてないと思います。 – beetroot

答えて

1

まあ、実際にあなたのポイントをプロットなっているが、彼らは、プロット領域の外側にあります。まず

、あなたのデータの各行が、それはあなたがプロットされますが、以下れるので、そのように強要される他、団結を合計しなければならない理由を、理解する:

example = example/matrix(rep(rowSums(example),ncol(example)),nrow(example),ncol(example)) 
example 

     X1  X2  X3 
1 1.000000 1.000000 -1.000000 
2 1.666667 -2.333333 1.666667 
3 0.250000 0.250000 0.500000 

今すぐ行はに合計団結:彼らは数値的に三元領域の外側の点を表しますよう

print(rowSums(example)) 
[1] 1 1 1 

あなたは「構図」という点で無意味です負の値を、持っているが、しかし、負の濃度は依然として、プロットすることができ、制限を拡張し、レンダリングすることができます彼らがどこにいるのかを見る:

ggtern(data=example, aes(x=X1,y=X2,z=X3)) + 
    geom_mask() + 
    geom_point() + 
    limit_tern(5,5,5) 

enter image description here