2016-08-02 9 views
1

gnuplotを使って2次元関数ch(x、y)をプロットしたいと思います。私のデータファイルは、このように構成されています。私は私の(三角形、構造化されていない)は、メッシュを構成するすべての三角形の3つの頂点で私の関数の値を持つコンターまたはサーフェスプロットフォームのデータファイルを取得する方法(gnuplotを使用)?

x1 y1 ch(x1,y1) 
x2 x2 ch(x2,y2) 
x3 y3 ch(x3,y3) 
x1 y1 ch(x1,y1) 

x4 y4 ch(x4,y4) 
... 
... 
... 

... 

(ここではhttp://i65.tinypic.com/2mydkq9.jpgを図を参照してください)。 伝説としてカラーバーと表面のために、このような1。何か、:伝説のようにカラーバーと似ていますが、等高線のための http://i68.tinypic.com/egvkzr.jpg と 2.何か、私が取得したいと思い何 は、2つの個別の数値です。

gnuplotでこれら2つの数字を取得するにはどうすればよいですか? Iは最初の実行例えば試した:

set palette rgbformulae 33,13,10 
set xrange [0: 0.25] 
set yrange [0: 0.20] 
set view map 
splot "mydatafile.txt" w l pal 

しかし三角形内部ホワイト(ない色で満たされている)であり、三角形のエッジのみが着色されています。 輪郭線はどうですか?

は、の空行で、次のいずれかから各三角形を分離するように、あなたが前処理にデータが必要になります、colourmapを作るために、事前に

Keccogrin

答えて

1

をありがとう

x1 y1 ch(x1,y1) 
x2 x2 ch(x2,y2) 

x3 y3 ch(x3,y3) 
x3 y3 ch(x3,y3) 


x1 y1 ch(x1,y1) 
x2 x2 ch(x2,y2) 

x4 y4 ch(x4,y4) 
x4 y4 ch(x4,y4) 

... 

そして:

縮重四角形になるようにし、中央に1つの空の行で、ポイントの一つを複製 awk -f script.awk data.txt > data.datでそれを実行し、Linuxシェルの下

{ 
print $0 
if (NR % 3 == 2) print "" 
if (NR % 3 == 0) print $0 "\n\n" 
} 

set view map 
set pm3d interpolate 10,10 corners2color mean 
splot "data.dat" notitle with pm3d 
があなたのデータを処理するには、この awkスクリプトを使用することができます。一度だけプロットしている場合は、plotの引数(「 plot "<awk -f script.awk data.txt"」など)で「オンザフライ」で実行できますが、何回かプロットする必要がある場合は大きなファイルではお勧めできません(gnuplot例えば、プロットを自動化するスクリプト)。

+0

これは唯一の方法ですか?データファイルをどのように前処理できますか?具体的には、例えば私のUbuntu端末にはどのようなコマンドを書きますか?私はコマンド "diff"を知っているだけで、これはそうではありません。 – Keccogrin

+0

3 * k + 1,3 * k + 2行と3 * k + 3行が1つの三角形に対応するように既に編成されていますか?もしそうなら、 'awk'スクリプトは書くのがとても簡単です。 – Joce

+0

はい、私のファイルは、私が最初の投稿に書いたのと全く同じ構造になっています。どのようにawkでそれを変更できますか? – Keccogrin

1

あなたはgnuplotのようにのようなあなたのためのグリッドデータを生成させることができます:

set dgrid3d spline 
set table $Gridded 
splot "mydatafile.txt" 
unset table 
unset dgrid3d 

その後、あなたは、このような輪郭と一緒に(グリッド)データをプロットすることができます

set view map 
set contour base 
set cntrlabel onecolor 
set cntrlabel format '%h' font ',8' 
set cntrlabel start 25 interval 200 
set cntrparam bspline 
set cntrparam order 10 
set cntrparam levels 10 
set pm3d at b explicit 
splot $Gridded with pm3d, \ 
     $Gridded with labels nosurface 

最初はsplotラインあなたにヒートマップと輪郭を与え、2番目の線は等高線のラベルを与えます。 また、dgrid3dのドキュメントを読んで、オプションを使用して遊ぶこともできます。あなたのデータスプラインによっては満足できる結果が得られないかもしれません(私は比較的大きなdx値を持つガウスフィルターを使って成功しましたが、あなたのデータとヒートマップの見た目がどれほど滑らかであるかによります)。

+0

こんにちは、スクリプトをコンパイルしましたが、 'set cntrlabel onecolor'コマンドが無効であることがわかりました。 'valid set options:[] =一つを選択する、{}はオプションを意味する......'いくつかのオプションを追加する必要があるようです。 –

関連する問題