Domanda

Vorrei pianificare punti in una trama 3D e creare una rete che potrebbe gestire i dati non rettangolari.Per essere più specifici I miei dati sono

data.dat

-1 0 0
-1 1 0
0 -1 0
0 0 0
0 1 0
1 -1 0
1 0 0
.

e il mio file gnuplot

Plot.plt

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

Sfortunatamente dgrid3d sembra rendere i miei dati rettangolari e una griglia rettangolare (in realtà una griglia quadrata) è tracciata.C'è un modo per tracciare una busta limitata dei miei dati?Idealmente vorrei tracciare il scafo convesso orthogonal del mio set di punti.

È stato utile?

Soluzione

Hai alcune opzioni per fare qualcosa di simile - sfortunatamente tutti richiedono un lavoro da parte tua.

In primo luogo, è importante notare che Gnuplot può gestire maglie non rettangolari per la tracciatura superficiale (anche se hai solo bisogno di una superficie rettangolare per questo esempio). Per la plottatura superficiale, il DataFile sembra (nota i record vuoti):

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

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

quindi forma i quadrilaterali. In questo caso, il primo quadrilatero sarebbe formato dai punti (x11, y11), (x21, y11), (x21, y12), (x22, y12), (x22, y22). Il secondo quadrilatero sarebbe formato da (x21, y21), (x31, y31), (x31, y22), (x23, y22) e così via. Quindi, dato il tuo set di punti, puoi facilmente creare una "maglia rettangolare" che manterrà tutti i tuoi datapoint. Non sarà uniformemente distanziato, ma non è un problema come tutto. Ora dobbiamo capire come rimuovere i punti in modo che Gnuplot Questo è il "trucco". È possibile contrassegnare una particolare stringa come "Dati mancanti" nel DataFile (set datafile missing "string"). In tal caso, Gnuplot non tratterà quel punto, ma continuerà a tenere ancora traccia delle coordinate dei dati mancanti per il gusto di generare la superficie.

Così alla fine della giornata, il tuo datafile sembrerà qualcosa come:

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

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

E lo script per tracciare sarebbe:

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
.

Se vuoi Gnuplot di calcolare il "scafo convesso ortogonale", penso che tu sia sfortunato lì.

Il modo semplice

Si noti inoltre che se si desidera un oggetto colorato solido nello spazio 2D (come l'immagine sul collegamento Wikipedia che hai pubblicato), questo problema diventa significativamente più facile. Se è possibile creare un DataFile con solo i vertici dell'oggetto che si desidera disegnare (in modo tale che (X1, Y1) si connette a (X2, Y2) si connette a (X3, Y3) ...), quindi è possibile tracciare Quel DataFile come:

set fillstyle #However you want the object to appear
plot "datafile.dat" u 1:2 with filledcurves closed
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top