2016-12-14 10 views
0

有する三元プロットのための3次元データを2次元データを変換:は(マトリックス</strong>の下部から<strong>)Iは、2次元データを有するR

m <- data.frame(x=c(1,1,1,2,2,3),y=c(1,2,3,1,2,1)) 
# x y 
#1 1 1 
#2 1 2 
#3 1 3 
#4 2 1 
#5 2 2 
#6 3 1 

私はこれをプロットした場合、それが与えますこのような何か:

x 
x x 
x x x 

だから、私はxy軸を持っています。しかし、私はこのように、三元プロットで、このデータをプロットしたい:私はz軸が必要

x 
x x 
x x x 

。それは同じデータですが、別の軸があります。

+0

私はこの上の目標を理解していればわかりません。 'ggtern'パッケージを使って次のように三項グラフを作ることができます:' library(ggtern); ggtern(m、aes(x = x1、y = x2、z = x3))+ geom_point() 'のようになります。 –

+0

@NickCriswell私は 'z'軸の値を持っていません。 – user2979409

+0

3つ目の軸 'z'を最初の2つの点で定義することができない限り、これが3項プロットの場合であるかどうかはわかりません。 –

答えて

0

私はあなたが望むとは思っていませんが、私はあなたがz値を持っていない場合は、このような方法でデータを移動するために探しているすべての確信はありません。 ternary plotsのこの説明を見て、定義上、3つの変数を持っていることに注意してください(データには2つしかありません)。また、常に定数に合計する必要があります(最後の変数がなく、あなたの質問に定義されていない一定の定数に合計しますか?)。

x値をシフトしたい場合は、y値が離散的である場合にのみ、y値ごとに中央値を配置することができます。これは、変更を行うにはdplyrを使用し、x値の各セットは0に中心を置きます(ただし、標準偏差は変更されません)。

m %>% 
    group_by(y) %>% 
    mutate(newX = as.numeric(scale(x, scale = FALSE))) %>% 
    ggplot(aes(x = newX, y = y)) + 
    geom_point() 

与える:

enter image description here

を使用すると、元のxスケールにこの方法を比較するためにすべての能力を失うように私は、あなたがこれをやってから取得しているかの情報はわかりません。これはあなたがやろうとしている(と私はむしろそれがないことを願って)何をされていない場合、その出力を明確にするためにあなたの質問を更新してください

enter image description here

:あなたはこのように、マッピングにcolor = factor(x)を追加しない限り、あなたは期待している。

z列がありませんでしたので、各行が特定の定数に合計されました。この例では、ggternを使用して、各行の合計が10単位:

m %>% 
    mutate(z = 10 - (x + y)) %>% 
    ggtern(aes(x, y, z)) + 
    geom_point() 

enter image description here

関連する問題