在循环内设置绘图标题

时间:2014-12-05 14:21:32

标签: gnuplot

我正在使用gnuplot绘图循环来绘制几个图中的数据:

filenames = "my data files"
plot for file in filenames file.".txt" \
title file

现在我正在使用title file来设置剧情标题,但是我希望能够更好地控制情节标题,而无需更改我的文件名。例如,在pseduocode中,我想:

files = [first, second, third, fourth]
titles = [One title, second title, third title, fourth title]
plot for [n=1:4] files[n] titles[n]

请注意,标题由多个单词组成,因此words(titles,n)不是一个选项。 有没有其他方法可以让我在我的标题中有更大的灵活性?

2 个答案:

答案 0 :(得分:3)

首先:好消息,5.0版本对引用文本部分的支持有限,可用于wordwords

对于5.0RC3版,以下工作正常:

titles='"first title text" "second title text"'
plot x title word(titles, 1), 2*x title word(titles, 2)

第二个'hack'可以与postscript终端一起使用,以防你使用它,并使用八进制表示法\040对标题内的空间进行编码:

set terminal postscript eps enhanced
set output 'spaces.eps'
titles='first\040title\040text second\040title\040text'
plot x title word(titles, 1), 2*x title word(titles, 2)

第三个版本使用空格的替换字符和sed的shell调用以在拆分后插入空格:

titles='first@title@text second@title@text'
sub(s) = system(sprintf("echo \"%s\" | sed 's/@/ /g'", s))
plot x title sub(word(titles, 1)), 2*x title sub(word(titles, 2))

您还可以设置一个函数myword,它使用awk或类似函数直接进行拆分。但这可能需要一些摆弄引号字符。

答案 1 :(得分:0)

确实可以使用word(string_with_words, index)

filenames = "my data files"
description= "one two three"

plot for [n=1:4] word(filenames, i) title word(description, i)