2017-05-18 16 views
3

私は次のコードを使用して、2つの2Dスカラー量、ヒートマップとして一方と重畳輪郭などのいずれかをプロットしようとしています:生成のgnuplot:同じsplotの内の2つの異なるファイルからの輪郭とヒートマップ

set contour base 
set cntrparam levels incremental 0,0.25,1.25 
unset surface 
set table cont2.dat 
splot 'vr245.gnu' 
unset table 
reset 
set xrange [1:215] 
set yrange [0:3.1415925025940E+00] 
set cbrange [7:17] 
unset key 
set view map 
set palette rgbformulae 33,13,10 
splot 'f_aveFe_245.gnu' u 1:2:3 with pm3d, "cont2.dat" u 1:2:3 w l 

結果by gnuplot Result produced by gnuplot

あなたが見ることができるように、輪郭には左側にアーティファクトがあります。この問題を解決するにはどうすればよいですか?ありがとうございました!

Input files are here.

答えて

1

それは実際には非常に興味深いです。この問題は、1.25のレベルに対応する特定の等高線に対して発生するようです。私はこの問題を次のように隔離したと思う。

のは

215 2.55865 1.25 
212.185 2.56004 1.25 
215 2.87839 1.25 

215 0.2632 1.25 
212.185 0.252052 1.25 
215 0.582938 1.25 

は今、gnuplotのコマンド(複数可)

unset key 
set view map 

set xr [212:215.5] 
set yr [0:3] 

set xtics nomirror 
set ytics nomirror 

splot \ 
    'file.dat' w lp, \ 
    '' u 1:2:3:(sprintf("%d", $0)) w labels offset char 0, char -0.5 

も1と4ですポイント、興味深いことに enter image description here

を作るよう私たちは、単純なデータファイルを持っていると仮定しましょう参加しました。ここで助けているようだ enter image description here

何空白行を複製することで、つまり、このファイル

215 2.55865 1.25 
212.185 2.56004 1.25 
215 2.87839 1.25 


215 0.2632 1.25 
212.185 0.252052 1.25 
215 0.582938 1.25 
:データファイルは

215 2.55865 1.25 
212.185 2.56004 1.25 
215 2.87839 1.25 
# 
215 0.2632 1.25 
212.185 0.252052 1.25 
215 0.582938 1.25 

gnuplotのは予想通り2及び3点のみを接続するように変更された場合 enter image description here

アプリへ:

は確かに切断コンポーネントを提供しますLYこのスクリプトでは、1は、たとえばgawkのために呼び出す可能性があり、単に計算した輪郭を持つファイル内のすべての空白行を複製:

set terminal pngcairo 
set output 'fig.png' 

set contour base 
set cntrparam levels incremental 0,0.25,1.25 
unset surface 
set table 'cont2.dat' 
splot 'vr245.gnu' 
unset table 
reset 

set xrange [1:215] 
set yrange [0:pi] 
set cbrange [7:17] 
unset key 
set view map 
set palette rgbformulae 33,13,10 
splot \ 
    'f_aveFe_245.gnu' u 1:2:3 with pm3d, \ 
    '<gawk "NF==0{print;} {print;}" cont2.dat' u 1:2:3 w l 

また enter image description here

を与える、あなたはplotにを使用することによってこの問題を解決するかもしれませんsplotの代わりに等高線をプロットします

set terminal pngcairo 
set output 'fig.png' 

set contour base 
set cntrparam levels incremental 0,0.25,1.25 
unset surface 
set table 'cont2.dat' 
splot 'vr245.gnu' 
unset table 
reset 

set xrange [1:215] 
set yrange [0:pi] 
set cbrange [7:17] 
unset key 
set view map 
set palette rgbformulae 33,13,10 

set multiplot 

set tmargin at screen 0.9 
set lmargin at screen 0.1 
set rmargin at screen 0.8 
set bmargin at screen 0.1 

splot \ 
    'f_aveFe_245.gnu' u 1:2:3 with pm3d 

unset xtics 
unset ytics 
unset border 
unset key 
plot \ 
    'cont2.dat' w l 
1

あなたは、選択的にまたは表面の輪郭とプロットのためのオン・オフを切り替えることができます単一のスプラット内の個々のプロット。

reset 
set contour base 
set cntrparam levels incremental 0,0.25,1.25 
set cntrlabel onecolor 
set autoscale xfix 
set autoscale yfix 
set cbrange [7:17] 
unset key 
set view map 
set palette rgbformulae 33,13,10 
splot 'f_aveFe_245.gnu' u 1:2:3 with pm3d nocontour, \ 
    'vr245.gnu' u 1:2:3 w l lc rgb "black" nosurface 

enter image description here

ための第1および表面のための輪郭を無効化、スクリプトで pm3dcontoursの両方を定義します
関連する問題