Gnuplotの非矩形データに適応した3Dグリッド
質問
ポイントを3Dプロットにプロットし、矩形以外のデータを処理できるメッシュを作成します。より具体的な私のデータは
ですdata.dat
-1 0 0
-1 1 0
0 -1 0
0 0 0
0 1 0
1 -1 0
1 0 0
.
と私のgnuplotファイル
plot.plt
set dgrid3d 3,3
splot 'data.dat' w l
pause -1
.
残念ながら、dgrid3d
は私のデータを長方形にし、長方形のグリッド(実際には正方形のグリッド)をプロットするようです。データの制限された封筒をプロットする方法はありますか?理想的には、直交凸包の一連のポイントの
解決
このようなことをするためのいくつかのオプションがあります - 残念ながら、それらはあなたの部品にいくつかの作業を必要とします。
最初に、 gnuplotは、表面プロットのための非矩形メッシュを処理することができます(この例では長方形の表面だけが必要な場合でも)。表面プロットの場合、データファイルは似ています(空白のレコードに注意してください):
x11 y11 z11
x21 y21 z21
x31 y31 z31
...
x12 y12 z12
x22 y22 z22
x23 y23 z23
...
.
それは四辺形を形成する。この場合、第1の四辺形は、点(X11、Y11)、(X21、Y21)、(X12、Y12)、(X22、Y22)から形成される。第二の四辺形は、(X21、Y21)、(X31、Y31)、(X22、Y22)、(X23、Y23)などから形成されるであろう。したがって、あなたのポイントセットを考えると、あなたは簡単にあなたのDataPointsのすべてを保持する "長方形のメッシュ"を作成することができます。それは均等に間隔を置いていませんが、それはすべて問題なく問題ありません。これで、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空間で(掲示されたウィキペディアリンクの写真のように)2Dスペースで立体色のオブジェクトが必要な場合、この問題は大幅に簡単になります。描画するオブジェクトの頂点だけでデータファイルを作成できる場合((x1、y1)が(x2、y2)に接続するように(x2、y2)。そのデータファイルとして:
set fillstyle #However you want the object to appear
plot "datafile.dat" u 1:2 with filledcurves closed
.