我有一些包含内容的数据文件
a1 b1 c1 d1
a1 b2 c2 d2
...
[blank line]
a2 b1 c1 d1
a2 b2 c2 d2
...
我用 gnuplot 绘制这个
splot 'file' u 1:2:3:4 w pm3d.
现在,我想使用二进制文件。我使用未格式化的流访问(直接或顺序访问不能直接工作)使用 Fortran 创建了文件。通过使用 gnuplot
splot 'file' binary format='%float%float%float%float' u 1:2:3
我得到一个正常的 3D 图。但是, pm3d-command 不起作用,因为我在二进制文件中没有空行。我收到错误消息:
>splot 'file' binary format='%float%float%float%float' u 1:2:3:4 w pm3d
Warning: Single isoline (scan) is not enough for a pm3d plot.
Hint: Missing blank lines in the data file? See 'help pm3d' and FAQ.
根据http://gnuplot.sourceforge.net/demo/image2.html中的演示脚本,我必须指定记录长度(我仍然不明白)。但是,使用演示页面中的此脚本和带有 pm3d 的命令会获得相同的错误消息:
splot 'scatter2.bin' binary record=30:30:29:26 u 1:2:3 w pm3d
那么如何正确绘制二进制文件中的四维数据呢?
编辑:谢谢,mgilson。现在它工作正常。仅作记录:我的 fortran 代码片段:
open(unit=83,file=fname,action='write',status='replace',access='stream',form='unformatted')
a= 0.d0
b= 0.d0
do i=1,200
do j=1,100
write(83)real(a),real(b),c(i,j),d(i,j)
b = b + db
end do
a = a + da
b = 0.d0
end do
close(83)
gnuplot 命令:
set pm3d map
set contour
set cntrparam levels 20
set cntrparam bspline
unset clabel
splot 'fname' binary record=(100,-1) format='%float' u 1:2:3:4 t 'd as pm3d-projection, c as contour'