2012-08-08 4 views
8

Sto tracciando un grafico e vorrei omettere tutti i punti che hanno y = 0. Non so a priori in quali righe appaiono questi risultati, quindi non posso dire a gnuplot di usare solo alcune righe.Ignora i punti con y = 0

È possibile o devo modificare il mio set di dati (e sostituire y = 0 per un punto al di fuori del mio intervallo)?

+0

Prima si dice "ometti tutti i punti", ma poi si dice "usa solo alcune linee". Stai dicendo che vuoi tralasciare le linee che attraversano l'asse y all'interno del range del tuo set di dati? – JAB

+0

@JAB Il primo pensiero (e se avessi un piccolo set di dati) è stato quello di dire manualmente a gnuplot quali linee usare, ma nel mio caso non è possibile. Sì, quello che voglio è lasciare fuori le linee che attraversano l'asse y – iomartin

risposta

18

È possibile farlo abbastanza facilmente:

plot "mydataset.dat" u 1:($2 == 0 ? NaN : $2) 

Qui usiamo l'operatore ternario gnuplot per sostituire i valori di 0 con NaN. Gnuplot ignora silenziosamente NaN, quindi dovrebbe funzionare bene.

+0

Perfetto, è esattamente quello che stavo cercando! – iomartin

10

Il modo elegante per fare questo sta usando:

set datafile missing

Ad esempio, si può fare:

set datafile missing '0'

e gnuplot salterà le voci con il simbolo 0. Puoi usare stringhe e NaN o 0.000.

+0

e se ci fosse un punto con x = 0? Non salterebbe anche quello? – iomartin

+1

Sì, quello era un esempio in cui si desidera saltare le voci con 0. Che si tratta di un valore personalizzato che indica a gnuplot quale valore saltare. –

+0

Grazie! Nel mio caso, il cavo DHT-22 è allentato, quindi il file di dati impostato con "0.00" ha permesso di saltare solo le letture errate. – SDsolar