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

5
我有一个由7列和8000多行组成的散乱数据文件(data file)。我想绘制这些数据的等高线图。我想要绘制的列是第一列,第二列和最后一列(第七列),得到以下2D和3D图形:
前视图:

front view

边缘视图:

edge on view

还有简单的3D:

3d view

从第二张图可以看出,首先,这些点聚集在2D区域的特定位置,与3D图中可以看到的最小值所在的区域相同。但是,其次,这些点在平面上随机分布(第二个图),我想我不能使用矩阵表示来绘制等高线轮廓。
是否可以使用gnuplot的“set contour base”和“cntrparam levels”来实现呢?
1个回答

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

enter image description here

最后,需要注意的是,如果您要重复使用插值数据,可以使用set dgrid3d ...; set table "somefile"; plot ...; unset table; unset dgrid3d; plot "somefile" ...命令将其绘制成表格形式(即绘制到文件中),这样gnuplot就不需要每次都进行插值计算。


非常感谢!这正是我需要的答案! - Panichi Pattumeros PapaCastoro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接