三角形の表面にヒートマップをプロットしようとしています。座標と「熱値」は、ページ staff.aist.go.jp/a.noda/programs/ternary/ternary-en.html に示されている方法で取得されます。
そのため、データを処理し、次の形式のデータ ファイルを取得します。
x y val
ここでx
、 とy
は 0 から 1 の間の値で、val
は表示する必要がある頻度を表す整数です。
データファイルはこれです: http://tinyurl.com/lqsqtvv
プロットスクリプトは次のとおりです。
#!/usr/bin/gnuplot
reset
set terminal pngcairo size 640,480
set output 'heat_map_triangle.png'
set border linewidth 0
unset tics
set bmargin 3
set lmargin 3
set rmargin 3
set tmargin 3
set dgrid3d
set pm3d map
#set pm3d ftriangles
set pm3d interpolate 0,0
set pm3d at bs
set label 'Y' at 0, -0.03 center
set label 'Z' at 1, -0.03 center
set label 'X' at 0.5, 0.886 center
set style line 1 lt 1 lw 3 pt -1 ps 1
# x
set arrow 1 from 0,0 to 1, 0.0 nohead linestyle 1
# z
set arrow 11 from 1, 0 to 0.50, 0.866 nohead linestyle 1
# y
set arrow 21 from 0.50, 0.866 to 0,0 nohead linestyle 1
splot "./triangle.out" using 1:2:3
だから、私はこのプロットを取得しています
それはまさに私が欲しかったものではありません...
データ ファイルにないゾーン (三角形の外側など) を塗りつぶさないように pm3d に指示する方法と、三角形の上端がヒートマップよりも高い理由がわかりません。
私が望むようにデータをプロットする方法はありますか?
pm3dのドキュメントでは、空のスペースを残すことができると書かれていますが、どのように?
ありがとう