我想绘制一些数据点(M_坐标_Plain.txt)到二维轮廓投影(由数据制成轮廓.txt)。
我在这些帖子中找到了类似的答案:如何在 gnuplot 中的二维热图上标记一些点?,将点叠加到 pm3d 地图上?,但不幸的是,这些对我来说似乎不起作用。
首先我设置选项:
set pm3d explicit
unset surface # Switch off the surface
set view map # Set a bird eye (xy plane) view
set contour # Plot contour lines
set key outside
set cntrparam cubicspline # smooth out the lines
unset colorbox
然后我使用 splot 命令进行绘图:
splot 'Contours.txt' using 1:2:3 notitle with pm3d,\
'M_Coord_Plain.txt' with points nocontour using 1:2:(0) pt 7
得到的图仅仅是轮廓二维投影,但是上面没有点,也没有错误。
我在 Ubuntu 16.04LTS 上使用 Gnuplot 5.0 patchlevel 3。
答案1
最后它成功了,但必须做出以下改变:
- 在点数据文件(M_Coord_Plain.txt)中的每一行之间都留一个空格,因为 splot 命令需要这种格式。
- 删除未设置表面命令并将其替换为设置表面命令,因为数据点绘制在表面上。然而,这导致点看起来模糊,因为零值(定义的第三列:(0))的对应颜色默认为深紫色。
- 因此,我们可以使用黑白调色板并定义宽范围的颜色框范围,以便在零和高轮廓值之间形成较大的对比。
因此绘制请求的图的命令是:
set pm3d explicit
set surface
set view map # Set a bird eye (xy plane) view
set contour # Plot contour lines
set key outside
set cntrparam cubicspline # Smooth out the lines
set cntrparam levels discrete 3.197,3.552 # Plot the selected contours
unset colorbox
set cbrange [0:7000] # Set the color range of contour values.
set palette model RGB defined ( 0 'white', 1 'black' )
set style line 1 lc rgb '#4169E1' pt 7 ps 2
splot 'Contours.txt' using 1:2:3 with pm3d notitle,\
'M_Coord_Plain.txt' using 1:2:(0) with points ls 1 notitle
得到的图是这。