#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]} работает.