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
risposta
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
Questa risposta è eccessivamente utile, grazie! – EverythingRightPlace
$ 0 è già un numero intero, non è necessario int() esso. – Karl
Si può fare uso di awk in gnuplot. Felice di spiegare, se spieghi il tuo problema in modo più dettagliato. –