gnuplot:散乱数据集的等高线图

时间:2015-02-01 16:22:50

标签: plot gnuplot

我有一个由7列和超过8000,000行(data file)组成的分散数据文件。我想绘制这些数据的轮廓。我要绘制的列是第一个,第二个和最后一个(第七个),给出如下的二维和三维图:

前视图:

front view

边缘视图:

edge on view

简单的3d:

3d view

从第二个图可以看出,第一个问题是点聚集在2d区域的特定位置,即最小的区域,可以在3d图中看到。但是,其次,这些点随机分布在平面上(第二个图),我想我不能使用矩阵表示来绘制iso-z的轮廓。

是否可以使用gnuplot set contour basecntrparam levels来做到这一点?

1 个答案:

答案 0 :(得分:4)

您需要一些平滑(或插值算法)。 set dgrid3d选项可帮助您创建常规网格并插入分散数据集中的值。内插数据的方法有多种,您可以查看help set dgrid3d以获取更多信息。我使用了高斯涂抹,你的数据看起来很好:

set dgrid3d 50,50 gauss 10e-6,10e-6
set logscale z
splot "fort.12" u 1:2:7 w l

enter image description here

注意gnuplot需要一些时间来生成新的50x50网格(如果增加网格点的数量,计算时间会相应增加),请以低分辨率进行一些测试,如果你想要非常精细的细节,那么你可以使用一个更好的网格为“生产数字”。您可以使用高斯内核中的距离缩放来更改图形的外观,但对于您的数据集,如果您比上面的示例小得多,则表面开始看起来很嘈杂。

现在您可以使用上述数据处理的轮廓:

set view map
unset surface
set contour
splot "fort.12" u 1:2:7 w l

enter image description here

最后,请注意,如果要重用插值数据,可以将其绘制到具有set dgrid3d ...; set table "somefile"; plot ...; unset table; unset dgrid3d; plot "somefile" ...的表(即绘制到文件),以便gnuplot不需要每次都进行插值时间。