Gnuplot, использующий массив bash 2D

#bash #gnuplot

#bash #gnuplot

Вопрос:

Я бы создавал диаграммы с несколькими метками при минимальных и максимальных значениях. У меня есть «2D-массив» в bash:

 for ((i = 0; i < 4; i  )); do
    T_min[i]=$(awk -F "," -v t="$(($t_mid - ($i * 24*60*60) - (12*60*60)))" 'BEGIN {min = 999} {if (($1 > t) amp;amp; ($1 < (t   24*60*60)) amp;amp; ($2 < min)) {min = $2; pos = $1}} END {printf ("%d,%.1f", pos, min)}' $TMPFILE)
done
  

вывод:

 1553778386,12.0 1553694671,10.1 1553606887,8.6 1553522781,10.6
  

и я хотел бы использовать его в gnuplot:

 do for [i=0:3] {
    set label "${T_min[i]#*,}" at ${T_min[i]} center offset 0,0.7 tc rgb "#d00000"
}
  

но вывод является ошибкой:

 line 0: undefined variable: center
  

Я перепробовал все виды вставки «i», но ни один из них не работает.

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

1. gnuplot не может взаимодействовать с shell напрямую, используйте system , например: a=system("echo $PATH"); print a . Что касается массивов bash, я не знаю, что вы можете сделать; но почему бы не перенаправить ваш вывод awk в файл, а затем использовать его в gnuplot?

2. Я не знаю, что именно делает ваш скрипт awk, но если вы можете объяснить, как добраться до ваших данных и какова структура данных, вероятно, это также можно сделать в скрипте gnuplot. Что касается вашей ошибки: метка ожидает координаты x,y , но мне кажется, что вы указываете только одно значение, если ${T_min[i]} оно не относится к структуре x,y .

3. Awk ищет минимальные и максимальные значения. Я знаю, что gnuplot может это сделать, но мне это нужно в пределах диапазона данных, где минимальные значения — это другие диапазоны, чем максимальные. В словах: он находит минимальные и максимальные значения температуры в течение 3 дней. Какой-нибудь пример реализации этого был бы хорош.

4. ${T_min[i]} имеет структуру x, y, использование $ {T_min[0]} работает.