2012-08-08 12 views
8

Estoy trazando un gráfico y me gustaría omitir todos los puntos que tienen y = 0. No sé a priori en qué líneas aparecen estos resultados, así que no puedo decirle a gnuplot que use solo algunas líneas.Ignorar puntos con y = 0

¿Es posible o tengo que editar mi conjunto de datos (y reemplazar y = 0 por algún lugar fuera de mi rango)?

+0

Primero dices "omitir todos los puntos", pero luego dices "usar solo algunas líneas". ¿Estás diciendo que quieres dejar de lado las líneas que cruzan el eje y dentro del rango de tu conjunto de datos? – JAB

+0

@JAB La primera idea (y si tuviera un pequeño conjunto de datos) fue decirle manualmente a gnuplot qué líneas usar, pero esto es impracticable en mi caso. Sí, lo que quiero es omitir las líneas the cross the y-axis – iomartin

Respuesta

18

Usted puede hacer esto con bastante facilidad:

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

Aquí se utiliza el operador ternario gnuplot para reemplazar los valores de 0 con NaN. Gnuplot ignora silenciosamente NaN, por lo que debería funcionar bien.

+0

Perfecto, ¡eso es exactamente lo que estaba buscando! – iomartin

10

La manera elegante de hacer esto es mediante:

set datafile missing

Por ejemplo, se puede hacer:

set datafile missing '0'

y gnuplot se saltará las entradas con el símbolo 0. Puede usar cadenas como NaN o 0.000.

+0

¿y si hubiera un punto con x = 0? ¿No se saltaría eso también? – iomartin

+1

Sí, ese fue un ejemplo en el que desea omitir entradas con 0. Que es un valor personalizado que le dice a gnuplot qué valor omitir. –

+0

¡Gracias! En mi caso, el cable DHT-22 está suelto, por lo que establecer el archivo de datos que faltaba "0.00" permitió omitir las lecturas falsas. – SDsolar