2015-05-08 1 views

ответ

3

Вы можете сделать это «полуавтоматически» с помощью команды stats. Эта команда может извлечь некоторые статистические значения из набора данных, но требует некоторой дополнительной обработки:

  1. Extract минимального и максимального у-значения, при условии, что ваш файл данные содержит два столбца, х-значение в первом, у-значения во втором столбце

    stats 'file.dat' using 2 nooutput name 'Y_' 
    

    Это дает вам мин/макс Y-значения в переменных Y_min и Y_max, но не соответствующие х-значение.

  2. Предыдущий шаг дает вам только получить соответствующие показатели, которые необходимо запускать stats снова для того, чтобы получить рентгеновские значения:

    stats 'file.dat' using 1 every ::Y_index_min::Y_index_min nooutput 
    X_min = STATS_min 
    stats 'file.dat' using 1 every ::Y_index_max::Y_index_max nooutput 
    X_max = STATS_max 
    
  3. Набор этикеток и/или точек в соответствующих координатах

    set label 1 sprintf("%.2f", Y_min) center at first X_min,Y_min point pt 7 ps 1 offset 0,-1.5 
    set label 2 sprintf("%.2f", Y_max) center at first X_max,Y_max point pt 7 ps 1 offset 0,1.5 
    ... 
    plot ... 
    
+0

Выглядит симпатично. Не работает, если x-серия - это данные времени. «Команда статистики недоступна в режиме timedata» – gaoithe

+1

@gaoithe Да, я знаю. Для данных времени вы должны сделать что-то вроде 'stats 'file.dat', используя 2 nooutput name 'Y_'; set timefmt '% H:% M:% S'; stats 'file.dat' используя (timecolumn (1)) каждый :: Y_index_min :: Y_index_min noutput; ...; установить время xdata; сюжет ... ' – Christoph

+0

да, спасибо. Я нашел ваш ответ здесь полезным: http://stackoverflow.com/questions/17977086/plotting-only-the-common-data-in-a-data-series-with-gnuplot Мое решение было более сложным, чем использование пробелов- полевой файл. С датой/временем внутри кавычек с пробелами внутри этой строки тоже. Пришлось конвертировать в .csv. команда статистики очень полезна! – gaoithe