在gnuplot中动态制作x,y tics

时间:2016-05-25 23:02:15

标签: string loops gnuplot axis

我在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

对不起,如果它太琐碎了,我无法弄清楚是什么问题......

谢谢!

1 个答案:

答案 0 :(得分:3)

字符串连接运算符.只能自动转换整数,而不是双精度数。您需要使用sprintfgprintf(-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)