我正在尝试在Gnuplot中绘制热图:
set view map
set size square
set cbrange [0:1]
splot "input.dat" 1:4:8 w pm3d
但我想跳过第一个和第一个数据中的数据行。特定范围内的第四列,不更改xrange
和yrange
。我怎么能这样做?
答案 0 :(得分:4)
如果您想跳过xmin
和xmax
之间的x值,以及ymin
和ymax
之间的y值,您可以执行条件绘图:
splot "input.dat" u 1:4:( $1 >= xmin && $1 <= xmax && \
$4 >= ymin && $4 <= ymax ? 1/0 : $8 ) w pm3d
上面的代码告诉gnuplot忽略范围之外的点。
例如,我使用bash
生成以下随机数据:
for i in `seq 1 1 100`
do for j in `seq 1 1 100`
do echo $i $j $RANDOM >> input.dat
done
echo "" >> input.dat
done
现在告诉gnuplot忽略某个区域:
xmin = 25; xmax = 36; ymin = 67; ymax = 88
set view map
splot "input.dat" u 1:2:( $1 >= xmin && $1 <= xmax && \
$2 >= ymin && $2 <= ymax ? 1/0 : $3 ) w pm3d not
如果您想要跳过多个区域,只需使用&#34;或&#34;逻辑运算符||
来划分区域:
xmin1 = 25; xmax1 = 36; ymin1 = 67; ymax1 = 88
xmin2 = 50; xmax2 = 90; ymin2 = 23; ymax2 = 34
set view map
splot "input.dat" u 1:2:( \
($1 >= xmin1 && $1 <= xmax1 && $2 >= ymin1 && $2 <= ymax1) \
|| \
($1 >= xmin2 && $1 <= xmax2 && $2 >= ymin2 && $2 <= ymax2) \
? 1/0 : $3 ) w pm3d not
答案 1 :(得分:1)
set view map
set size square
set cbrange [0:1]
set xrange [-2.5:2.5]
set yrange [-2.5:2.5]
splot "input.dat" u ($1>=-1 && $1<=1?$1:1/0):($4>=-1 && $4<=1?$4:1/0):8 with pm3d
如果第1列和第4列中的值小于-1或大于1
,这将跳过行