2014-12-11 2 views
1

Я пытаюсь создать заголовки автоматически в Gnuplot. У меня есть массив (titleprefix) и другой набор переменных (a1, a2, a3 ...), а заголовок - это префикс, сопровождаемый наклоном (a). Я пробовал:Создание заголовков из переменных в Gnuplot

title(n) = sprintf("word(titleprefix,n).sprintf(\" Slope = %.3f\",%f)",a."n"+0) 

Конечно, это не сработало. Ошибка:

Нечисловая строка, в которой ожидалось числовое выражение.

Любая идея, как я решаю это?

В конце концов, я хотел бы построить несколько кривых, как это:

plot f1 w l t title(1), \ 
    f2 w l t title(2), \ 
    f3 w l t title(3) 

ответ

0

Одним из вариантов сделать такие вещи, чтобы создать полную set title команды внутри такой функции, а затем eval это.

В вашем случае это требует немного скручивания мозга, чтобы получить котировки правильно, так что имена переменных являются правильными:

titleprefix="first second third" 
a1 = 1.111 
a2 = 2.222 
a3 = 3.333 
title(n) = 'set title "'.word(titleprefix, n).': ".sprintf("Slope = %.3f", a'.n.')' 

set multiplot layout 1,3 
eval(title(1)) 
plot x 
eval(title(2)) 
plot 2*x 
eval(title(3)) 
plot 3*x 
unset multiplot 

enter image description here

В качестве альтернативы, вы можете создать список слов из форматированные значения переменных при определении или вычислении переменных.

a1 = 1.111111 
a2 = 2.222222 
a3 = 3.333333 
tmp = 'a = ""' 
do for [i=1:3] { tmp = tmp.".sprintf('%.3f ', a".i.")" } 
eval(tmp) 

plot for [i=1:3] i*x title word(a, i) 

enter image description here

+0

Это очень помогает, но я не использую Multiplot. Как бы вы это сделали, если хотите построить несколько кривых. 'plot file1 wlt title (1), file2 wlt title (2)' – user3259040

+0

Классический случай, когда был бы полезен минимальный, но полный примерный скрипт;) Итак, чтобы получить остальную информацию: где вы получаете переменную значения от? – Christoph

+0

Трудно было напечатать сценарий в комментарии. Вопрос в том, как вы можете изменить его, если вы не использовали мультиплексор. Например, как вы оцениваете команды заголовка, если хотите сделать что-то вроде 'plot file1 w l t title (1), file2 w l t title (2), file2 w l t title (3)'. Остальное - то же, что и ваш рабочий пример. – user3259040

Смежные вопросы