1

3D プロットでポイントをプロットし、長方形以外のデータを処理できるメッシュを作成したいと考えています。より具体的に言うと、私のデータは

データ.dat

-1 0 0
-1 1 0
0 -1 0
0 0 0
0 1 0
1 -1 0
1 0 0

そして私のgnuplotファイル

プロット.plt

set dgrid3d 3,3
splot 'data.dat' w l
pause -1

残念ながらdgrid3d、データが長方形になり、長方形のグリッド (実際には正方形のグリッド) がプロットされるようです。データの制限されたエンベロープをプロットする方法はありますか? 理想的には、一連の点の直交凸包をプロットしたいと思います。

4

1 に答える 1

1

このようなことを行うためのオプションがいくつかありますが、残念ながら、それらはすべてあなたの側で何らかの作業を必要とします。

まず、 gnuplot はサーフェス プロット用に長方形以外のメッシュを処理できることに注意することが重要です (この例では長方形のサーフェスしか必要としませんが)。表面プロットの場合、データファイルは次のようになります (空白のレコードに注意してください)。

x11 y11 z11
x21 y21 z21
x31 y31 z31
...

x12 y12 z12
x22 y22 z22
x23 y23 z23
...

すると四角形になります。この場合、最初の四辺形は点 (x11,y11)、(x21,y21)、(x12,y12)、(x22,y22) から形成されます。2 番目の四辺形は、(x21,y21)、(x31,y31)、(x22,y22)、(x23,y23) などから形成されます。したがって、一連のポイントがあれば、すべてのデータポイントを保持する「長方形メッシュ」を簡単に作成できます。等間隔ではありませんが、問題ありません。ここで、gnuplot が点をプロットしないように、点を削除する方法を理解する必要があります。これが「トリック」です。データファイルで特定の文字列を「欠落データ」としてマークできます ( set datafile missing "string")。その場合、gnuplot はその点をプロットしませんが、曲面を生成するために欠落データの座標を追跡します。

したがって、一日の終わりには、データファイルは次のようになります。

x11 y11 ?
x21 y21 ?
x31 y31 z31
...

x12 y12 ?
x22 y22 z22
x23 y23 z23
...

それをプロットするスクリプトは次のようになります。

set datafile missing '?'
set surf
set view map #Not sure about this...depends on the view you want
splot "mydata.dat" u 1:2:3 w lines

gnuplot に「直交凸包」を計算させたい場合は、運が悪いと思います。

簡単な方法

また、2d 空間で単色のオブジェクトが必要な場合 (投稿したウィキペディア リンクの写真のように)、この問題は大幅に簡単になります。描画したいオブジェクトの頂点だけでデータファイルを作成できる場合((x1、y1)が(x2、y2)に接続するように(x3、y3)に接続するため)、プロットできますそのデータファイルは次のとおりです。

set fillstyle #However you want the object to appear
plot "datafile.dat" u 1:2 with filledcurves closed
于 2012-05-21T17:47:16.050 に答える