1

いくつかの値を持つ行列を 3D プロットしています。プロットに等高線を追加する必要があります。これを行うための簡単な gnuplot コマンドはありますか?

コマンド「コンターベースを設定」を試しましたが、1行しか表示されませんでした。多くの行が必要だと思います。matlabの画像を参照してください

gnuplotでプロットすると、左上隅に等高線が1つしか表示されませんが、他のすべては正しいです。

私の目標は、このMatlabplotのようなmatlabのように見えるようにすることです

この例も見つけました:コメントのリンクを参照してください(十分な担当者がいません)が、test.txtのデータ値をどこに入力すればよいかわかりません

test.txt

test.txt

gnuplot コマンド

set view map
set yrange [0:30]
set xrange [0:30]
set dgrid3d 100,100,4
set contour base
splot 'test.txt' u 1:2:3 w pm3d
4

1 に答える 1

3

欠けているのは、gnuplot に輪郭を配置する場所を伝えることです。これは、 -0.3 から開始し、 o.1 ごとに 0.5 まで輪郭をトレースするset cntrparam levels incr -0.3,0.1,0.5ことを意味するコマンドを介して行われます。

私の知る限り、輪郭をすべて黒くしたい場合は、輪郭線を一時ファイルに保存する必要があります(こちらcontour.txt)。

だからあなたのスクリプトは

reset
set contour
unset surface
set cntrparam levels incr -0.3,0.1,0.5

set view map
set xrange [0:30]
set yrange [0:30]

set dgrid3d 100,100,4

set table "contour.txt"
splot 'test.txt'
unset table

unset contour
set surface
set table "dgrid.txt"
splot 'test.txt'
unset table

reset
set pm3d map
unset key
set palette defined (0 '#352a87', 1 '#0363e1',2 '#1485d4', 3 '#06a7c6', 4 '#38b99e', 5 '#92bf73', 6 '#d9ba56', 7 '#fcce2e', 8 '#f9fb0e')
set autoscale fix
set grid

splot 'dgrid.txt' w pm3d, 'contour.txt' w l lc rgb "black"

これにより、次のようになります。

ここ

ノート:

dgrid.txt補間ファイル ( ) は、データファイルが既にメッシュ順になっているため、各行の後に (つまり、30 データポイントごとに) 空白行を残してデータファイルを少しフォーマットすると、取り除くことができます。

awkこれは、スクリプトでも実行できます。でも、調べるのが面倒…。

残りは同じままで、期待どおりに機能します。

これがどのように見えるかです:

その場合、スクリプトは単純に次のようになります。

set pm3d map impl
set contour
set style increment user
do for [i=1:18] { set style line i lc rgb "black"}
set cntrparam levels incr -0.3,0.1,0.5
set palette defined (0 '#352a87', 1 '#0363e1',2 '#1485d4', 3 '#06a7c6', 4 '#38b99e', 5 '#92bf73', 6 '#d9ba56', 7 '#fcce2e', 8 '#f9fb0e')
set autoscale fix
splot 'test.txt' w pm3d notitle

データはグリッドによって補間されないため、中間ファイルは必要なく、輪郭が改善されます。

ここに画像の説明を入力

于 2016-03-07T08:48:44.697 に答える