在gnuplot标题中显示下划线而不是下标

时间:2012-12-01 00:17:55

标签: gnuplot

简短问题: 如何在gnuplot中显示从gnuplot中的变量名称分配的标题中的_(下划线)字符?

详情: 我有类似下面的代码:

items = "foo_abc foo_bcd bar_def"
do for [item in items] {
  set title item
  set output item.eps
  plot item."-input.txt" using 1:2 title item with linespoints
}

除了标题从foo_abc更改为foo a bc之外,这对gnuplot工作正常。我不知道是否要使用转义字符,因为我不希望它在文件名中。我尝试了几种不同的选择,单引号和双引号,但我还没找到我需要的东西。

5 个答案:

答案 0 :(得分:16)

如果您正在使用增强型eps终端,那么您首先需要转义下划线。今天有another related question可以解释一下这个问题。设置终端时,请尝试:

set terminal postscript noenhanced <whatever else here...>

这对我有用(Arch linux,gnuplot 4.7.0)。如果增强型终端是必不可少的,下面是我找到的部分解决方案。假设下划线总是出现在字符串中的相同位置。

set terminal postscript enhanced
items = 'foo\_abc foo\_bcd bar\_def'
do for [item in items] {
  set output item[1:3].item[5:*].'.eps'
  set title item
  plot sin(x)
}

这样你就可以转义下划线而不会出现文件名中的\。注意'items'字符串使用单引号;有关详细信息,请参阅先前链接的问题。

答案 1 :(得分:15)

生成标签的大多数gnuplot命令接受noenhanced关键字,这将阻止gnuplot仅对该字符串使用增强文本。在这种情况下,只需执行以下操作即可:

set title item noenhanced

另一种方法是创建一个函数,在将字符串传递给set output时将从字符串中删除不需要的文本:

remove(x,s)=(i0=strstrt(s,x),i0 ? remove(x,s[:i0-1].s[i0+strlen(x):]):s)
# Makes me wish gnuplot syntax was more pythonic :-p
#TODO:  Write a `replace` function :-).  These just might go into my ".gnuplot" file...

我使用内联函数来查找字符串x中第一次出现s的索引。然后我通过字符串连接和切片删除该事件,并再次递归调用该函数以删除下一次出现。如果找不到索引(strstrt返回0),那么我们只返回放入的字符串。现在你可以这样做:

set output remove('\',item)
set title item

答案 2 :(得分:10)

而不是foo_abc,请写foo\\\_abc

答案 3 :(得分:6)

下划线将标题视为“增强文本”。使用

关闭它

设置密钥noenhanced

答案 4 :(得分:0)

我对标题中的下划线有同样的问题:例如我需要编写4_3子帧并且我需要增强的postscript。 SIMPLEST的方式来自相邻的帖子:``如果你正在使用增强型eps终端,那么你首先需要逃避下划线。今天还有另一个相关的问题,可以解释一下这个问题。&#34; - How is @ produced in gnuplot? 所以,我遵循了他们的建议,这很有效:

  

情节&#39; LC.stats&#39;你3:4 ti&#34; {/ = 15 1350星在C18 4 \ _3子帧}&#34; -   下划线前的双重转义字符。