在 gnuplot 中缩放图像以匹配数据大小
Scaling image in gnuplot to match with data size
我正在尝试在范围 x=(0, 50k+) , y=(0,50k+) 的 gnuplot 中绘制数据 (x, y, z)。
但是,数据需要叠加在一个大小为(2000, 2000)的地图上。
我遇到的问题是,x 轴和 y 轴范围是 50k+,数据绘制得很好,
然而,图像是在轴的 (0, 2000) 范围映射的角中渲染的。
我需要独立于包含整个绘图区域的数据轴来渲染地图,
在 ata 范围内。以下是我正在尝试的不缩放图像的方法,
reset
set dgrid3d 200,200 qnorm 2
set xrange [0:57599]
set yrange [0:57599]
set table $Data
splot "data.dat" using 1:2:4
unset table
# create contour lines
set contour base
set cntrparam level incremental 0, 5, 100
unset surface
set table $Contour
splot "data.dat" using 1:2:4
unset table
unset key
set palette defined ( 0 "#ff0000", 40 "#0000ff", 60 "#00ff00", 100 "#e0e0e0" )
set size square
set style fill transparent solid 0.4 noborder
plot "Map.png" binary filetype=png w rgbimage, \
$Data u 1:2:(6):(6):3 with boxxyerror palette,\
$Contour u 1:2:3 w l lt rgb "grey"
这就是我得到的,
这就是我想要做的,
有可以修饰的辅助关键字 binary filetype=png w rgbimage
。您需要的是 dx
和 dy
(请参阅“帮助二进制关键字”)。在您的情况下,图像为 2000x2000 像素,每个像素代表一个区域
57599/2000 = 28.8,所以绘图命令变为
plot "Map.png" binary filetype=png dx=28.8 dy=28.8 with rgbimage, \
$Data u 1:2:(6):(6):3 with boxxyerror palette,\
$Contour u 1:2:3 w l lt rgb "grey"
如有必要,您可以使用关键字 origin=(x0,y0)
调整相对于绘图原点的图像位置
如果您使用的是当前版本 (5.4) 的 gnuplot
您可以将地图放置为填充绘图区域的像素图,然后在其上绘制您的绘图,而不是将地图绘制为绘图命令的一部分 with rgbimage
。其语法为:
set pixmap 1 "Map.png" at graph 0,0 size graph 1,1 back
plot $Data u 1:2:(6):(6):3 with boxxyerror palette,\
$Contour u 1:2:3 w l lt rgb "grey"
然而,这会失去地图坐标和地块之间的任何联系,因此确保它们匹配完全取决于您。例如,如果您缩放上面的绘图,缩放后的绘图将包含原始数据和等高线的子集,但整个地图图像仍将用于填充绘图区域。在使用 with rgbimage
的解决方案中,地图和等高线将一起缩放。
我正在尝试在范围 x=(0, 50k+) , y=(0,50k+) 的 gnuplot 中绘制数据 (x, y, z)。 但是,数据需要叠加在一个大小为(2000, 2000)的地图上。
我遇到的问题是,x 轴和 y 轴范围是 50k+,数据绘制得很好, 然而,图像是在轴的 (0, 2000) 范围映射的角中渲染的。 我需要独立于包含整个绘图区域的数据轴来渲染地图, 在 ata 范围内。以下是我正在尝试的不缩放图像的方法,
reset
set dgrid3d 200,200 qnorm 2
set xrange [0:57599]
set yrange [0:57599]
set table $Data
splot "data.dat" using 1:2:4
unset table
# create contour lines
set contour base
set cntrparam level incremental 0, 5, 100
unset surface
set table $Contour
splot "data.dat" using 1:2:4
unset table
unset key
set palette defined ( 0 "#ff0000", 40 "#0000ff", 60 "#00ff00", 100 "#e0e0e0" )
set size square
set style fill transparent solid 0.4 noborder
plot "Map.png" binary filetype=png w rgbimage, \
$Data u 1:2:(6):(6):3 with boxxyerror palette,\
$Contour u 1:2:3 w l lt rgb "grey"
这就是我得到的,
这就是我想要做的,
有可以修饰的辅助关键字 binary filetype=png w rgbimage
。您需要的是 dx
和 dy
(请参阅“帮助二进制关键字”)。在您的情况下,图像为 2000x2000 像素,每个像素代表一个区域
57599/2000 = 28.8,所以绘图命令变为
plot "Map.png" binary filetype=png dx=28.8 dy=28.8 with rgbimage, \
$Data u 1:2:(6):(6):3 with boxxyerror palette,\
$Contour u 1:2:3 w l lt rgb "grey"
如有必要,您可以使用关键字 origin=(x0,y0)
如果您使用的是当前版本 (5.4) 的 gnuplot
您可以将地图放置为填充绘图区域的像素图,然后在其上绘制您的绘图,而不是将地图绘制为绘图命令的一部分 with rgbimage
。其语法为:
set pixmap 1 "Map.png" at graph 0,0 size graph 1,1 back
plot $Data u 1:2:(6):(6):3 with boxxyerror palette,\
$Contour u 1:2:3 w l lt rgb "grey"
然而,这会失去地图坐标和地块之间的任何联系,因此确保它们匹配完全取决于您。例如,如果您缩放上面的绘图,缩放后的绘图将包含原始数据和等高线的子集,但整个地图图像仍将用于填充绘图区域。在使用 with rgbimage
的解决方案中,地图和等高线将一起缩放。