2012-03-13 1 views
8

Sto provando a tracciare due set di dati con gnuplot. Sono entrambe le terzine (x, y, z). Non sono disposti su una griglia. Voglio tracciare uno di loro usando dgrid3d e pm3d. Inoltre, voglio sovrapporre l'altro set di dati ma solo punti sparsi.Stampa due dataset sullo stesso grafico con gnuplot. Uno con dgrid3d, l'altro senza

Per dare un esempio più concreto: sto cercando di tracciare l'effetto di un cilindro che si avvicina a una superficie. Voglio tracciare la risposta della superficie ed è qui che dgrid3d è utile. Oltre a questo, voglio tracciare la posizione del cilindro e ho la sua circonferenza come punti.

che ho usato:

set dgrid3d 100,100,4 
set pm3d 
splot "dataset1" with pm3d, "dataset2" with dots 

Il set di dati è di circa 100x100 punti, disposti su un vicino quadrati, in modo da 100,100 opere migliori qui. Indipendentemente da come faccio a tracciare il secondo set di dati, finisce sempre per essere un quadrato delle stesse dimensioni del cilindro, invece di un bel cerchio. Quando spengo lo dgrid3d, posso tracciare il secondo set di dati da solo e il risultato è una bella circonferenza del cilindro.

Quindi la mia domanda è: è possibile tracciare un grafico 3D utilizzando due set di dati, uno utilizzando dgrid3d e l'altro non lo utilizza?

risposta

8

Sì, questo è possibile, ma è un po 'più complicato di quanto si possa pensare. La chiave è quella di utilizzare set table

Per esempio:

set dgrid3d 100,100,4 
set pm3d explicit 
set table "interpolated_data.dat" 
splot "dataset1" with pm3d #writes the interpolated data to "interpolated_data.dat" 
unset table 
unset dgrid3d 
splot "interpolated_data.dat" with pm3d, "dataset2" with dots 

La ragione per cui il vostro tentativo non ha funzionato è perché quando dgrid3d è in vigore, tutti i dati letti è interpolato per una griglia e poi tracciati usando qualunque stile tu specifichi.

Da help dgrid3d di Quando è abilitata, i dati 3D letti da un file sono sempre trattati come un insieme di dati sparsi gnuplot.

Come nota a margine, questo metodo può anche essere utilizzato per tracciare contorni anche su un pm3d.

+0

Che funziona perfettamente! Grazie molto! – wojrze

+0

Sicuro. 'set table' è un angolo poco usato di gnuplot che penso possa essere VERAMENTE utile occasionalmente. Sono sicuro che non è il modo più efficiente per fare alcune cose, dal momento che crea un file temporaneo, ma per un sacco di cose, è l'unico modo per farlo. – mgilson

+0

Con le versioni di gnuplot più recenti, funziona solo se si rimuove il 'con pm3d' quando si esegue il plottaggio sulla tabella. – Kknd