如果在Gnuplot下控制序列

23

请问如何在Gnuplot中执行控制序列?我需要做类似于以下内容的操作:

if (x == nan)
  set xrange[]

else
  set xrange[10:30]

我尝试了类似的东西

( x > 100000 ) ?  (set xrange[]) : (set xrange[10:30])

...... 但一直没有成功!我花了数小时尝试解决这个问题!! 有人可以帮帮我吗? 如果万不得已,我可以创建一个 shell 脚本来管理这个问题,但我认为应该有一些控制序列可以解决这个问题。


你好,Christoph!实际上我有自己的脚本,将“x”作为参数输入到gnuplot文件中。 - Courier
那么 if (x > 10000) { set xrange[*:*] } else { set xrange[10:30]} 怎么处理? - Christoph
正如您建议的那样,我尝试了这个'if(2==3){set xrange[]} else {set xrange[10:30]}',但它并没有起作用。 - Courier
你说的“不起作用”是什么意思?对我来说它很好用,但需要4.6版本。但是set xrange []没有任何作用,要使用自动缩放,请使用例如set xrange [*:*]set autoscale x - Christoph
问题不在于 'set range[]'。我已经尝试过了。问题在于我使用 'if' 的方式。附言:我正在使用 Gnuplot 4.4。 - Courier
显示剩余4条评论
1个回答

35

对于gnuplot 4.4.4版本,if语句必须写在单行中:

if (x > 10000) set autoscale x; else set xrange [10:30]

或者使用\来继续下一行。

if (x > 10000) \
    set autoscale x; \
else \
    set xrange [10:30]

自4.6.0版本以来,gnuplot可以使用括号来分隔分支:

if (x > 10000) {
    set autoscale x
} else {
    set xrange [10:30]
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接