2012-06-04 9 views
11

Ho un file a due colonne con 1000000 voci, ovvero 1000000 righe, tuttavia non voglio tracciare tutti i dati, voglio solo tracciare i punti ogni 100 righe? Come fare questo in gnuplot? Inoltre, è possibile specificare alcune righe particolari da tracciare in gnuplot?Come stampare righe specifiche in GNUplot

+0

Si può fare uso di awk in gnuplot. Felice di spiegare, se spieghi il tuo problema in modo più dettagliato. –

risposta

24

Hai almeno due opzioni qui. In primo luogo, controllare la documentazione per help datafile every

plot 'datafile' every 100 using 1:2 

Un'altra opzione è quella di utilizzare la pseudo-colonna 0 (help datafile using pseudo) in combinazione con l'operatore ternario (help ternary) e la conoscenza che gnuplot ignora automaticamente numeri definiti per filtrare le linee :

plot 'datafile' u (((int($0)%100)==0)? $1 : 1/0):2 

si può fare questo un po 'più facile da capire se si utilizza una macro:

set macro 
line_number='int($0)' 
plot 'datafile' u (((@line_number % 100) == 0) ? $1 : 1/0) : 2 

Nota che includo solo il secondo perché potresti (in linea di principio) usarlo per selezionare numeri di linea molto strani dal file di dati (ad es. 1,100,1000,10000) che non è possibile utilizzare tutti - ad es.

plot 'datafile' u (((@line_number == 1 || @line_number == 100 || @line_number == 1000) $1:1/0)):2 

vedere anche le risposte alle this question

+0

Questa risposta è eccessivamente utile, grazie! – EverythingRightPlace

+0

$ 0 è già un numero intero, non è necessario int() esso. – Karl

Problemi correlati