Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在gnuplot中动态生成x,y tics_String_Loops_Gnuplot_Axis - Fatal编程技术网

String 在gnuplot中动态生成x,y tics

String 在gnuplot中动态生成x,y tics,string,loops,gnuplot,axis,String,Loops,Gnuplot,Axis,我在gnuplot中设置x和ytics时遇到问题。 我想创建热图,要做到这一点,我需要为其中的每个“块”创建特定的tic。我想用循环创建它们,这样使用它们就容易多了,因为例如,我需要制作60个XTIC,所以我必须写下: 设置xtics(“-0.3”0、-0.29”1、“0.3”60) 它让人筋疲力尽,令人沮丧,所以我想制作一个这样的脚本: xnumtics = 60 ynumtics = 90 set macros xticstring = '(' do for [i=0:xnumtics]

我在gnuplot中设置x和ytics时遇到问题。 我想创建热图,要做到这一点,我需要为其中的每个“块”创建特定的tic。我想用循环创建它们,这样使用它们就容易多了,因为例如,我需要制作60个XTIC,所以我必须写下:

设置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行:内部错误:字符串运算符应用于非字符串类型

第21行表示:xticstring=xticstring.“.”(-0.3+i*0.01)。“.i..”

我的想法来自:

我在ubuntu 14.04 LTS上使用gnuplot 4.6 ptchlvl 4

对不起,如果太琐碎了,我想不出是什么问题


谢谢大家!

字符串串联运算符
只能自动转换整数,不能转换双倍数。您需要使用
sprintf
gprintf
(-0.3+i*0.01)
转换为字符串

但是,设置TIC的较短方法是使用
set for…
iterations:

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)
您真的需要手动添加tics吗?通常将数据文件中的值映射为使用gnuplot的常用数值轴:

plot 'file.dat' using (-0.3 + $1 * 0.01):($2 * -0.01)