2014-01-10 3 views
5

私は相関行列のHintonプロットを描きたがっているが、私は方法の99%を得ることができるが、私がプロットしている点のサイズを設定すると、そのサイズはピクセル単位であり、グラフのサイズが変わると縮尺も変化しません。どのようにして、ポイントのサイズを軸のサイズの一部になるように「キャリブレーションする」ことができますか?グラフの大きさを倍にするとポイントが倍になるようにしたい。私は間違った幾何学を使っているかもしれない。ggplot2のグラフを使って点の縮尺を作る

私はこれまでのところ、このコードを持っている:

library(ggplot2) 
library(data.table) 
library(reshape2) 

DT = data.table(A = rnorm(10), B = rnorm(10), X = rnorm(10), Y = rnorm(10)) 
C = cor(DT) 

ggplot(melt(C), aes(x=Var1, y=Var2, size=abs(value), color=as.factor(sign(value)))) + 
    geom_point(shape = 15) + 
    scale_size_area(max_size = 40) + 
    theme_bw() 

私はちょうど約対角線の領域を埋めるために取得することができますが、私は、グラフのサイズを変更した場合にポイントがないscale_size_areaためmax_sizeを変更することにより規模。ポイントを軸座標で特定のサイズにする方法はありますか?理想的にはもちろん、私は四角形を使っていて、どんな形でも使えるようにしたいのですが、それでも動作しますが、それを行う幾何学は分かりません。

enter image description here

答えて

4

だけでポイントが交差するそれぞれの上に四角形を描画するためにgeom_rect()関数内のバックグリッド座標にVAR1 & VAR2を有効にするas.numericを使用しています。あなたは0.5単位*相関最大と最小の共同ordsを生成するために追加した場合、彼らは1の値を正確に収まるだろう、と比例して縮小:

ggplot(melt(C)) + 
    geom_point(aes(Var1,Var2)) + 
    geom_rect(aes(xmin=as.numeric(Var1)-0.5*abs(value),xmax=as.numeric(Var1)+0.5*abs(value),ymin=as.numeric(Var2)-0.5*abs(value),ymax=as.numeric(Var2)+0.5*abs(value),fill=as.factor(sign(value)))) + 
    theme_bw() 

enter image description here

+0

あなたのグラフは、ラベル付けしているどのように来ます軸は正しくありますか?私はあなたのサンプルコードを使用すると1,2,3,4を得るだけですか? – Corone

+0

申し訳ありません - 更新されました。軸上の因子にラベルを付けるためにgeom_point()呼び出しを追加する必要があります。私は自分のイメージとコードが同期していないだろう... – Troy

+0

それは素晴らしい感謝です! – Corone

関連する問題