我在gnuplot中设置x和ytics有问题。 我想创建热图,为了做到这一点,我需要为它们中的每个“块”提供特定的抽搐。我想用循环创建它们,因此使用它们要容易得多,因为例如我需要制作类似60 xtics的所以我必须写下这个:
设置xtics(“ - 0.3”0,“ - 0.29”1,...“0.3”60)
令人筋疲力尽,令人沮丧,所以我想制作一个这样的剧本:
xnumtics = 60
ynumtics = 90
set macros
xticstring = '('
do for [i=0:xnumtics] {
xticstring = xticstring.'"'.(-0.3 + i*0.01).'" '.i.', '
}
xticstring = xticstring.'"'.0.3.'" '.xnumtics.')'
set xtics @xticstring
yticstring = '('
do for [j=0:ynumtics] {
yticstring = yticstring.'"'.(0 - i*0.01).'" '.j.', '
}
yticstring = yticstring.'"'.0.9.'"'.ynumtics.' '
set ytics @yticstring
不幸的是我收到错误:第21行:内部错误:STRING运算符应用于非STRING类型
第21行指的是:xticstring = xticstring。'“'。( - 0.3 + i * 0.01)。'”''。i。','
我从Can GNUPLOT dynamically prepare index labels?
得到了这个想法我在ubuntu 14.04 LTS上使用gnuplot 4.6 ptchlvl 4
对不起,如果它太琐碎了,我无法弄清楚是什么问题......
谢谢!
答案 0 :(得分:3)
字符串连接运算符.
只能自动转换整数,而不是双精度数。您需要使用sprintf
或gprintf
将(-0.3 + i*0.01)
转换为字符串。
但是,设置抽搐的更简单方法是使用set for ...
次迭代:
xnumtics = 60
ynumtics = 90
set xtics () # clear all tics
set for [i=0:xnumtics] xtics add (gprintf("%g", -0.3 + i * 0.01) i)
set ytics ()
set for [i=0:ynumtics] ytics add (gprintf("%g", -i * 0.01) i)
你真的需要手动添加抽搐吗?通常会将数据文件中的值映射为使用gnuplot的常用数值轴:
plot 'file.dat' using (-0.3 + $1 * 0.01):($2 * -0.01)