0

三角形の表面にヒートマップをプロットしようとしています。座標と「熱値」は、ページ 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のドキュメントでは、空のスペースを残すことができると書かれていますが、どのように?

ありがとう

4

2 に答える 2

3

最終的に、pm3d が機能するためには、gnuplot はデータがある種のグリッド「メッシュ」上にあることを必要とします。メッシュは四角形で構成する必要がありますが、それが唯一の規定です。たとえば、グリッドポイントは次のように配置できます。

 1
        2
                 3
 4      5        6     10
                 9
        8
 7

この場合、gnuplot は点 1-2-4-5 と点 2-3-5-6 などから四角形を作成します。gnuplot は のcorners2colorオプションに応じて四角形に色を付けますpm3d。デフォルトでは、セルの隅にある 4 つの値の平均が使用されます。

これをデータファイルに入れるには、データファイルを次のように調整します。

 x1   y1   z1
 x2   y2   z2
 x3   y3   z3
 x10  y10  z10

 x4   y4   z4
 x5   y5   z5
 x6   y6   z6
 x10  y10  z10

 x7   y7   z7
 x8   y8   z8
 x9   y9   z8
 x10  y10  z10

データ全体の水平方向の「スキャン」の間に空白行を残した方法に注目してください。(もちろん、データ全体を垂直方向に「スキャン」するようにデータファイルを構成することもできます)。また、三角形の右側の頂点に点を繰り返して、鋭い点を付けました。これは厳密には必要ではありませんが、それが可能であることを示したかったのです。

データはその形式ではなく、通常、gnuplot はデータがグリッド化されていないというエラーを表示します。ただし、set dgrid3dデータがグリッド上になく、gnuplot が逆距離加重関数を使用してデータをグリッドに補間する必要があることを gnuplot に伝える行を追加しました。残念ながら、gnuplot は通常の (長方形の) グリッドを作成するため、他の種類のグリッドを作成するように指示する方法はありません。最終的には、データをこの形式に変換する方法を理解する必要があります。

于 2013-06-18T13:11:13.307 に答える