8

次のようなデータファイルがあります。

1   2   3   0.5
2   8   9   0.2
3   4   78  0.4
6   5   7   0.01
9   9   9   0.3
10  12  18  0.9
6   8   4   1

このようなグラフを作成したいと思います http://2.bp.blogspot.com/-378_rAaSSVU/UzU0gnGcr9I/AAAAAAAABnU/P1GwP9RKBkM/s1600/gnuplot.png 4 列目が色です。

私は試しました-4番目の列を使用していないため、明らかに間違っていますが、ドキュメントには何も見つかりませんでした:

set dgrid3d 30,30
set view 60,45
set hidden3d
dataFile='prova.dat'
set palette defined (0 "blue", 0.5 "white", 1 "pink")
set pm3d 
splot dataFile u 1:2:3 with pm3d

そのようなことは可能ですか?

4

1 に答える 1

7

onlypm3dを使用すると、4 番目の列を使用して、Z 値に関係なく色を選択できます。dgrid3dグリッド化はカラー列で実行されないため、これと一緒に直接使用することはできません。

回避策を使用できます: 最初にグリッド化された z 値を 1 つのファイルにプロットし、次にグリッド化された色の値を 2 番目のファイルにプロットし、最後のポイントとして無効dgrid3dにして、2 つの一時ファイルをその場でマージし、それらの値をプロットします。

set dgrid3d 30,30
dataFile='prova.dat'

set table dataFile.'.grid'
splot dataFile u 1:2:3
unset table

set table dataFile.'.color'
splot dataFile u 1:2:4
unset table

set view 60,45
set hidden3d
set palette defined (0 "blue", 0.5 "white", 1 "pink")
set autoscale cbfix
set pm3d
unset dgrid3d
set ticslevel 0
splot sprintf('< paste %s.grid %s.color', dataFile, dataFile) u 1:2:3:7 with pm3d notitle

ここに画像の説明を入力

pasteこれは、Unix ライクなオペレーティング システム用のコマンド ライン ツールであることに注意してください。Windows 用の同様のソリューションについては、たとえば、小さな Python スクリプトを作成できます(可能な実装については、gnuplot で 2 つのファイルから比率を取得paste.pyするに対する私の回答を参照してください)。次に、バイナリ ファイルを実行する必要があり、コマンドは次のようになります。wgnuplot_pipes.exesplot

splot sprintf('< python paste.py %s.grid %s.color', dataFile, dataFile) u 1:2:3:7 with pm3d notitle

もちろん、これには python がインストールされている必要があり、python バイナリはPATH環境変数を介して利用可能でなければなりません。

于 2014-08-29T17:37:34.537 に答える