gnuplot は X 軸と Y 軸を等間隔にする必要はありません。(私の回答の別の 1 つを参照してください: https://stackoverflow.com/a/10690041/748858 )。x[i] = f_x(i)
やのようなグリッドをよく扱いますy[j] = f_y(j)
。これをプロットするのは非常に簡単です。データファイルは次のようになります。
#datafile.dat
x1 y1 z11
x1 y2 z12
...
x1 yN z1N
#<--- blank line (leave these comments out of your datafile ;)
x2 y1 z21
x2 y2 z22
...
x2 yN z2N
#<--- blank line
...
...
#<--- blank line
xN y1 zN1
...
xN yN zNN
(空白行に注意してください)
そのようなデータファイルは、次のようにプロットできます。
set view map
splot "datafile.dat" u 1:2:3 w pm3d
このオプションset pm3d corners2color
を使用して、作成した長方形のどの角に色を付けるかを微調整できます。
また、これを行うと本質的に同じプロットを作成できることに注意してください。
set view map
plot "datafile.dat" u 1:2:3 w image
私はこれを自分で使用していませんが、等間隔でない長方形のグリッドでは失敗する可能性があります (試してみる必要があります)。
コメントへの返信
はい、コメントでほのめかしたように、pm3d は (M-1)x(N-1) 四角形を生成します - 4 つの角をとり、(デフォルトで) それらの値を平均して色を割り当てます。あなたはこれを嫌っているようですが、(ほとんどの場合) M と N が適度に大きい (20 より大きい) 場合のプロットの違いを見分けることができるとは思えません。したがって、先に進む前に、 EVERY POINTをプロットすることが本当に必要かどうかを自問してください。
そうは言っても、少し手を加えるだけで、gnuplot はまだやりたいことを実行できます。解決策は、特定の角を使用して四角形全体に色を割り当てるように指定することです。
#specify that the first corner should be used for coloring the quadrilateral
set pm3d corners2color c1 #could also be c2,c3, or c4.
次に、マトリックスの最後の行と最後の列を単純に追加して、2 回プロットします (より大きなデータセットに対応するために余分なグリッドポイントを作成します。まだ十分ではありません。グリッド値をセルの半分だけシフトする必要があります。あなたの四角形は問題の点を中心にしています - セルをどのようにシフトするかは、選択したコーナー (c1、c2、c3、c4) によって異なります - どれが必要かを判断するには、それをいじる必要があります.
ここでの問題は gnuplot ではないことに注意してください。MxN トリプルが与えられた場合、MxN 面を構築するのに十分な情報がデータファイルにないということです。各ポイントで、位置 (x,y)、値 (z)、およびそこに描画される四角形のサイズを知る必要があります。これは、ファイルに詰め込んだよりも多くの情報です。もちろん、内側のポイントでサイズを推測することはできますが (途中で会うだけです)、外側のポイントについては推測できません。 しかし、次の内部ポイントのサイズを使用しないのはなぜですか?. これは良い質問です。(通常) 長方形のグリッドではうまく機能しますが、これは (一般的なケースではありますが) 特殊なケースにすぎません。他の多くのグリッドでは (おそらく) 惨めに失敗します。要点は、gnuplot がコーナーを平均化することは通常「十分に近い」と判断したことですが、それを変更するオプションが与えられるということです。