Gnuplot for循环与连续变量

时间:2015-02-06 08:04:23

标签: variables for-loop gnuplot

我有一个包含许多物体和标签的情节。所以我想用循环来简化srcipt。但我不知道如何处理这些变量。我将变量定义为

V1 = 10
V2 = 20
V3 = 23
...
LABEL1 = a
LABEL2 = b
...

循环看起来应该是那样的

set for [i=1:15] label i at V(i),y_label LABEL(i)

此表示法导致编译脚本时出错。是否可以在gnuplot中定义这样的循环?如果是这样我该怎么办? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您可以定义一个函数,将标签定义格式化为字符串,并使用do循环来评估字符串:

y_label = 0
V1 = 10
V2 = 20
V3 = 23
LABEL1 = "a"
LABEL2 = "b"
LABEL3 = "c"

do for [i=1:3] {
   eval(sprintf('set label %d at V%d,y_label LABEL%d', i, i, i))
}

或者,您可以使用两个带有空格分隔的单词的字符串进行迭代:

V = "10 20 23"
LABEL = "a b c"
set for [i=1:words(V)] label i at word(V, i),y_label word(LABEL, i)

请注意,gnuplot 5.0也支持使用引号将几个单词作为一个项目组合在一起:

V = "10 20 25"
LABEL = "'first label' 'second label' 'third one'"
set for [i=1:words(V)] label i at word(V, i),y_label word(LABEL, i)

enter image description here