我想使用gnuplot绘制存储在一堆文件中的数据。如果文件是使用序号命名的(例如“1.dat”“2.dat”,......)我会使用像
这样的东西plot for [i=1:10] i.'.dat' u 1:2 w lp t 'I='.i;
但是,文件现在使用2的幂命名,即“2.dat”,“4.dat”,“8.dat”,....我试过
plot for [i=1:10] (2**i).'.dat' u 1:2 w lp t 'I='.(2**i);
但我收到了错误
STRING operator applied to non-STRING type
我认为这是因为gnuplot将(2**i)
视为浮点数而不是整数。
我确信有办法做我想做的事,但因为我很擅长使用gnuplot的控制语句,所以我无法理解。有人可以帮助我吗?
答案 0 :(得分:3)
您可以使用sprintf
将数字转换为字符串:
plot for [i=1:10] sprintf('%d',2**i).'.dat' u 1:2 w lp t 'I='.(2**i)
有趣的是,在标题中将(2**i)
与'I='
连接起来不会造成任何问题。
答案 1 :(得分:3)
尝试使用空字符串(""
)开始字符串连接操作。这是"".(2**i).".dat"
而不是(2**i).".dat"
。