2017-11-02 61 views
1

不均一なグリッドで得られたf(x、y)関数の3D結果のヒートマップをプロットしようとしています。 私が得たプロットは、グラフの一番上にいくつかの醜い空白を与えます。 以下は、私が直面している問題を再現するための最小限のスクリプトです。gnuplotが不均一なグリッド上でヒートマップをひどくレンダリングする

#Generate some dummy data 
f(x,y) = sqrt(x**2 + y**2) 
set table 
set samples 1000 
set output "table.dat" 
splot [0:10][0:10] f(x,y) 

描画スクリプト:

# plot it 
set term x11 
set out 
set pm3d map 
splot [1:5] [0:2] "table.dat" u ($1):($2/$1):($3) 

Y軸値がx軸に依存するので、グリッドは、今もあります。次の図に示されているように、gnuplotはプロットの上端の近くのスペースを埋めることができません。軸の限界を変更しても効果はありません。

sample impage plot

白い三角形をアップ記入し、このプロットは立派に見えるようにする方法任意のアイデア?

ありがとうございました。

+0

どのように正確に見えるか想像するのは難しいですね** – RomanPerekhrest

+0

こんにちは、これが正しいです。私は一番上に白い三角形がないことを意味しました。ここにプロットされるデータがいくつかあります。色を付ける必要があります。 – vjaunet

+0

サンプル間のデータ点を埋めるには、補間を使用する必要があります。これは 'set dgrid3d'で行うことができます。また、あなたのテーブルは 'x'(1000点)で非常に細かい解像度を持っていますが、' y'(10点)では非常に解像度が低いことに注意してください。補間はより細かいメッシュでうまくいくでしょう( 'set isosamples 1000')。 – user8153

答えて

0

2次元補間にdgrid3dを使用できます。 usingの指定が($1):($2/$1):($3)の場合、データポイントを持つドメインは非常に不規則です。他のすべての値をNaNに設定することで、小さな矩形だけに興味があることをdgrid3dに伝えることができます。たとえば:

set pm3d map 
set dgrid3d 100,100 qnorm 4 
splot [1:5] [0:2] "table.dat" u ($1 >= 1 && $1 <= 5 ? $1 : 1/0):($2/$1 > 0 && $2/$1 < 2 ? $2/$1 : 1/0):3 

enter image description here

あなたは合理的な補間を得るためにdgrid3dのさまざまなオプションを試してみる必要があります。

+0

パーフェクト!このトリックをありがとう! dgrid3dがプロット範囲に基づいてこれをしないというのは残念です。 – vjaunet

関連する問題