обратный хвост для gnuplot

#output #gnuplot #reverse

#вывод #gnuplot #обратный

Вопрос:

Я хотел бы отобразить данные в повторяющейся онлайн-диаграмме с:

 plot "tail -140 logging.dat | tac -r" with lines
  

Я получаю сообщение об ошибке, файл не может быть открыт, однако в CLI он выдает обратный список данных, как и ожидалось. Кто-нибудь может помочь мне с правильным синтаксисом, пожалуйста?

Комментарии:

1. Добавить < перед tail

Ответ №1:

Просто для справки, вот только для gnuplot, следовательно, независимое от платформы решение. Проверьте через stats общее количество строк. Если строк меньше N (здесь: 140), будут выведены все строки, в противном случае — только последние 140.

Примечание: если вы это сделаете plot ... with lines , gnuplot по умолчанию отобразит столбец 1 как x, а столбец 2 как y. Однако выходной график будет выглядеть одинаково, независимо от того, обращаете вы данные или нет. Итак, я не понимаю, зачем было бы изменять данные, если только вы не хотите отобразить что-то, чего вы здесь не показали, или, например, вывести перевернутую таблицу в виде текста.

Скрипт:

 ### plot N last lines of a file
reset session

FILE = "SO55221113.dat"

# create some random test data
set table FILE
    set samples 1000
    y0 = rand(0)
    plot ' ' u 1:(y0=y0 rand(0)-0.5)
unset table

N = 140
stats FILE u 0 nooutput     # get total number of lines into STATS_records
M = STATS_records<=N ? STATS_records : STATS_records-N

plot FILE u 1:2           w l lc rgb "green" ti "all values", 
       '' u 1:2 every ::M w l lc rgb "red"   ti sprintf("last %d values",N)
### end of script
  

Результат:

введите описание изображения здесь