2012-08-08 8 views
8

Ich zeichne ein Diagramm und möchte alle Punkte mit y = 0 weglassen. Ich weiß nicht a priori, an welchen Zeilen diese Ergebnisse angezeigt werden, daher kann ich gnuplot nicht sagen, nur einige Zeilen zu verwenden.Ignoriere Punkte mit y = 0

Ist das möglich oder muss ich meinen Datensatz bearbeiten (und y = 0 für irgendwo außerhalb meiner Reichweite ersetzen)?

+0

Zuerst sagen Sie "alle Punkte weglassen", aber dann sagen Sie "benutzen Sie nur ein paar Zeilen". Wollen Sie damit sagen, dass Sie die Zeilen, die die y-Achse kreuzen, im Bereich Ihres Datensatzes weglassen wollen? – JAB

+0

@JAB Der erste Gedanke (und wenn ich einen kleinen Datensatz hatte) war gnuclot manuell zu sagen, welche Zeilen zu verwenden, aber das ist in meinem Fall nicht praktikabel. Ja, was ich will, ist, die Linien wegzulassen, die die y-Achse kreuzen. – iomartin

Antwort

18

Sie können dies recht einfach:

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

Hier verwenden wir den gnuplot ternären Operator Werte von 0 mit NaN zu ersetzen. Gnuplot ignoriert im Hintergrund NaN, so dass es gut funktionieren sollte.

+0

Perfekt, genau das, wonach ich gesucht habe! – iomartin

10

Die elegante Art, das zu tun ist, mit:

set datafile missing

Zum Beispiel können Sie tun:

set datafile missing '0'

und gnuplot die Einträge mit dem Symbol 0 überspringen wird. Sie können Strings sowie NaN oder 0.000 verwenden.

+0

Was wäre, wenn es einen Punkt mit x = 0 gäbe? Würde das nicht auch übersprungen? – iomartin

+1

Ja, das war ein Beispiel, in dem Sie Einträge mit 0 überspringen möchten. Es ist ein benutzerdefinierter Wert, der gnuplot mitteilt, welcher Wert übersprungen werden soll. –

+0

Danke! In meinem Fall ist die DHT-22-Leitung locker, so dass die eingestellte Datendatei "0.00" fehlte und die falschen Messwerte einfach übersprungen werden konnten. – SDsolar

Verwandte Themen