私はこれを持っています。これは三面図にヒートマップをプロットするのに十分なデータポイントを持っています。ここでggtern等高線プロットin R
library(ggtern)
library(reshape2)
N=90
trans.prob = as.matrix(read.table("./N90_p_0.350_eta_90_W12.dat",fill=TRUE))
colnames(trans.prob) = NULL
# flatten trans.prob for ternary plot
flattened.tb = melt(trans.prob,varnames = c("x","y"),value.name = "W12")
# delete rows with NA
flattened.tb = flattened.tb[complete.cases(flattened.tb),]
flattened.tb$x = (flattened.tb$x-1)/N
flattened.tb$y = (flattened.tb$y-1)/N
flattened.tb$z = 1 - flattened.tb$x - flattened.tb$y
ggtern(data = flattened.tb, aes(x=x,y=y,z=z)) +
geom_point(size=1, aes(color=W12)) +
theme_bw() +
scale_color_gradient2(low = "green", mid = "yellow", high = "red")
(それは本当にヒートマップ、十分なデータポイントを持つだけで散布図ではありませんが)私が得たものである:
私はggtern
を使用して、次のようなものを取得したいです:
私の質問は:ggtern
を使って2番目の数字のようなものを得るにはどうすればいいですか?
編集1:ファイル名の入力ミスがあります。ファイル名を修正しました。 データファイルに含まれるデータポイントが多すぎるため、ここに直接貼り付けることはできません。
第2図は、サードパーティのMatlabパッケージternplot
によって作成されたものです。私は最初の図のヒートマップではなく、別々の線を持つ3値の等高線図が必要です。具体的には、等高線のリストをW12=0.05,0.1,0.15,...
のように指定したいと思います。私はgeom_density_tern
とgeom_interpolate_tern
で何時間も遊んでいますが、私が望むものを手に入れる方法はまだありません。
MATLABコードは:
X,Y,1-X-Y
は、プロット上の座標
data
格納値とベクトルが輪郭の値を指定する指定
[HCl, Hha, cax] = terncontour(X,Y,1-X-Y,data,[0.01,0.1,0.2,0.3,0.4,0.5]);
。
がハック-R @、私は私の最新の編集では、あなたの最初の2つのコメントを取り上げました。 – wdg
よろしくお願いいたします。この質問では心配しないでください。しかし、将来の参照のために理解するだけで、データそのものをペーストするのではなく、データの 'dput'か、それが長すぎる場合はGitHubやPasteBinなどのデータの 'dput'へのリンクは、新しいサンプルデータを作成するだけでなく、パッケージに組み込まれているデータセット(' data() ')を使用することもできます。 –
@ Hack-R、私はその記事を徹底的に読んだ。それは私が望むものではありません。私はウェブサイトggtern.comにも行きました。私は私の場合に関連する例を見つけることができませんでした。私の場合、私は空間全体のすべてのポイントに対して正確に1つの値を持っています。 – wdg