绘制热图时如何跳过 Gnuplot 中的行?
How do I skip rows in Gnuplot when plotting a heat map?
我正在尝试在 Gnuplot 中绘制热图:
set view map
set size square
set cbrange [0:1]
splot "input.dat" 1:4:8 w pm3d
但我想在不更改 xrange
和 yrange
的情况下跳过特定范围内第一列和第四列中数据的行。我该怎么做?
嗯.....我自己找到的。谢谢!!!
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/0):(>=-1 && <=1?:1/0):8 with pm3d
如果列 $1 和 $4 中的值小于 -1 或大于 1,这将跳过这些行
如果你想跳过 xmin
和 xmax
之间的 x 值,以及 ymin
和 ymax
之间的 y 值,你可以做一个条件图:
splot "input.dat" u 1:4:( >= xmin && <= xmax && \
>= ymin && <= ymax ? 1/0 : ) 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:( >= xmin && <= xmax && \
>= ymin && <= ymax ? 1/0 : ) w pm3d not
如果您有多个要跳过的区域,只需使用 "or" 逻辑运算符 ||
来分隔区域:
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:( \
( >= xmin1 && <= xmax1 && >= ymin1 && <= ymax1) \
|| \
( >= xmin2 && <= xmax2 && >= ymin2 && <= ymax2) \
? 1/0 : ) w pm3d not
我正在尝试在 Gnuplot 中绘制热图:
set view map
set size square
set cbrange [0:1]
splot "input.dat" 1:4:8 w pm3d
但我想在不更改 xrange
和 yrange
的情况下跳过特定范围内第一列和第四列中数据的行。我该怎么做?
嗯.....我自己找到的。谢谢!!!
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/0):(>=-1 && <=1?:1/0):8 with pm3d
如果列 $1 和 $4 中的值小于 -1 或大于 1,这将跳过这些行
如果你想跳过 xmin
和 xmax
之间的 x 值,以及 ymin
和 ymax
之间的 y 值,你可以做一个条件图:
splot "input.dat" u 1:4:( >= xmin && <= xmax && \
>= ymin && <= ymax ? 1/0 : ) 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:( >= xmin && <= xmax && \
>= ymin && <= ymax ? 1/0 : ) w pm3d not
如果您有多个要跳过的区域,只需使用 "or" 逻辑运算符 ||
来分隔区域:
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:( \
( >= xmin1 && <= xmax1 && >= ymin1 && <= ymax1) \
|| \
( >= xmin2 && <= xmax2 && >= ymin2 && <= ymax2) \
? 1/0 : ) w pm3d not