2012-06-04 13 views
11

Mam plik dwukolumnowy, który ma 1000000 wpisów, czyli 1000000 wierszy, jednak nie chcę wykreślać wszystkich danych, chcę tylko wykreślić punkty co 100 linii? Jak to zrobić w gnuplot? Ponadto, czy jest możliwe określenie niektórych wierszy do wydrukowania w gnuplot?Jak drukować określone wiersze w GNUplot

+0

Można skorzystać z awk w gnuplot. Z przyjemnością wyjaśnisz, jeśli wyjaśnisz swój problem bardziej szczegółowo. –

Odpowiedz

24

Masz tutaj co najmniej dwie opcje. Najpierw sprawdzić w dokumentacji help datafile every

plot 'datafile' every 100 using 1:2 

Inną możliwością jest użycie pseudo kolumnę 0 (help datafile using pseudo), w połączeniu z operatorem trójskładnikowej (help ternary) i wiedzy, która Gnuplot cicho ignoruje niezdefiniowanych numery filtrowanie linii :

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

można zrobić to trochę łatwiej zrozumieć, jeśli użyć makra:

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

Zauważ, że dołączam tylko drugi, ponieważ możesz (w zasadzie) użyć tego do wybrania bardzo dziwnych numerów linii z pliku danych (np. 1 100, 1 000, 10000), których nie można zrobić przy użyciu każdego - np.

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

Zobacz także odpowiedź na this question

+0

Ta odpowiedź jest zbyt pomocna, thx! – EverythingRightPlace

+0

$ 0 jest już liczbą całkowitą, bez potrzeby int() go. – Karl

Powiązane problemy