如何在带有图像的 2D 图上绘制遮罩(图案填充)- gnuplot
how to draw a mask (pattern fill) over a 2D plot with image - gnuplot
我有一个包含样式数据的文本文件:
0 0 123
0 1 1345
. . .
x(int) y(int) intensity(double)
. . .
0 max size y 1345
1 0 564
. . .
max size x max size y intensity last point
此数据表示在其上扩散的物质的二维地图,我可以使用 1:2:3 w 图像命令来绘制颜色:
plot data.dat u ():():3 w image
我现在的问题是:我也知道我的 2D 平面的边界条件,也就是说,并非 2D 平面的每个正方形都可用于物质漫反射,虽然我知道在这些区域中强度将为 0 , 我想用图案填充绘制这些区域。为了了解这些区域,我有另一个文件:
0 0 1
0 1 0
. . .
x(int) y(int) value
. . .
0 max size y 0
1 0 0
. . .
max size x max size y value last point
如果是可访问区域,则值为 0,否则为 1。你会怎么画这部分?
这不是一个非常 "efficient" 的解决方案,但是为了用图案填充掩码,可以处理相应的文件并在标记为 "accessible" 的每个坐标处放置一个矩形。
下面的脚本首先通过stats
命令确定掩码文件中的记录数,循环处理该文件,并在每次迭代extracts中处理相应的行。如果第三列(保存到变量z
中)的值等于1,则在相应位置生成一个基本矩形。
fName = 'mask.dat'
stats fName nooutput
unset key
set size ratio -1
set xtics out nomirror
set ytics out nomirror
w = 1.
h = 1.
set xr [STATS_min_x-w/2:STATS_max_x+w/2]
set yr [STATS_min_y-h/2:STATS_max_y+h/2]
#unset colorbox
do for [i=0:STATS_records-1] {
stats fName using (x=, y=, z=) every ::i::i nooutput
if(z == 1){
set object \
rectangle \
center x,y \
size w,h \
fc rgb 'red' \
fs transparent pattern 4 \
noborder \
front
}
}
set palette defined (0 "black", 1 "white")
plot 'data.dat' u 1:2:3 w image
使用随机数据(在 20x20 网格上生成),生成:
我有一个包含样式数据的文本文件:
0 0 123
0 1 1345
. . .
x(int) y(int) intensity(double)
. . .
0 max size y 1345
1 0 564
. . .
max size x max size y intensity last point
此数据表示在其上扩散的物质的二维地图,我可以使用 1:2:3 w 图像命令来绘制颜色:
plot data.dat u ():():3 w image
我现在的问题是:我也知道我的 2D 平面的边界条件,也就是说,并非 2D 平面的每个正方形都可用于物质漫反射,虽然我知道在这些区域中强度将为 0 , 我想用图案填充绘制这些区域。为了了解这些区域,我有另一个文件:
0 0 1
0 1 0
. . .
x(int) y(int) value
. . .
0 max size y 0
1 0 0
. . .
max size x max size y value last point
如果是可访问区域,则值为 0,否则为 1。你会怎么画这部分?
这不是一个非常 "efficient" 的解决方案,但是为了用图案填充掩码,可以处理相应的文件并在标记为 "accessible" 的每个坐标处放置一个矩形。
下面的脚本首先通过stats
命令确定掩码文件中的记录数,循环处理该文件,并在每次迭代extracts中处理相应的行。如果第三列(保存到变量z
中)的值等于1,则在相应位置生成一个基本矩形。
fName = 'mask.dat'
stats fName nooutput
unset key
set size ratio -1
set xtics out nomirror
set ytics out nomirror
w = 1.
h = 1.
set xr [STATS_min_x-w/2:STATS_max_x+w/2]
set yr [STATS_min_y-h/2:STATS_max_y+h/2]
#unset colorbox
do for [i=0:STATS_records-1] {
stats fName using (x=, y=, z=) every ::i::i nooutput
if(z == 1){
set object \
rectangle \
center x,y \
size w,h \
fc rgb 'red' \
fs transparent pattern 4 \
noborder \
front
}
}
set palette defined (0 "black", 1 "white")
plot 'data.dat' u 1:2:3 w image
使用随机数据(在 20x20 网格上生成),生成: