我有一个包含许多物体和标签的情节。所以我想用循环来简化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中定义这样的循环?如果是这样我该怎么办? 谢谢你的帮助!
答案 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)