繁体   English   中英

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

[英]gnuplot: Contour plot of a scattered data set

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

正视图:

正视图

边缘视图:

在视图上的边缘

而简单的3D:

3d视图

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

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

您需要一些平滑(或插值算法)。 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

在此输入图像描述

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

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

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

在此输入图像描述

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM