Macros 在gnuplot 4.6.3中使用宏

Macros 在gnuplot 4.6.3中使用宏,macros,gnuplot,Macros,Gnuplot,我试图找到网上描述的类似错误,但没有找到任何东西。希望有人能帮忙 我在gnuplot 4.4p3中使用了类似于此示例的代码: set macros col_TIME = '1' col_meas = '2' range = 'using ($@col_TIME/3600):@col_meas' plot "file.txt" @range 但是对于gnuplot4.6p3,它在执行最后一行时会引发错误。它正确地替代了 plot "file.txt" using ($@col_TIME/3600

我试图找到网上描述的类似错误,但没有找到任何东西。希望有人能帮忙

我在gnuplot 4.4p3中使用了类似于此示例的代码:

set macros
col_TIME = '1'
col_meas = '2'
range = 'using ($@col_TIME/3600):@col_meas'
plot "file.txt" @range
但是对于gnuplot4.6p3,它在执行最后一行时会引发错误。它正确地替代了

plot "file.txt" using ($@col_TIME/3600):@col_meas

首先,但随后用“无效字符”抱怨此行中的第一个@。

这与您的解决方法基本相同,但我可能会使用
sprintf

range = sprintf('using ($%d/3600):%d',col_TIME,col_meas)
gnuplot的较新版本还支持
eval
命令,这可能很有用。以下是内置帮助中提供的示例:

set_label(x, y, text) \
     = sprintf("set label '%s' at %f, %f point pt 5", text, x, y)
eval set_label(1., 1., 'one/one')
eval set_label(2., 1., 'two/one')
eval set_label(1., 2., 'one/two')

我对新版本的解决方法是使用类似于
range='using($).col_TIME./3600):'。col_meas
非常感谢,我非常喜欢printf版本,因为它更易于阅读。