【问题标题】:gnuplot: Contour plot of a scattered data setgnuplot:分散数据集的等高线图
【发布时间】:2015-02-02 16:31:39
【问题描述】:

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

前视图:

边缘视图:

还有简单的 3d:

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

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

【问题讨论】:

    标签: plot gnuplot


    【解决方案1】:

    您需要一些平滑(或插值算法)。 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" ... 的表中(即绘制到文件),这样 gnuplot 就不需要每次都进行插值。

    【讨论】:

    • 非常感谢!这是我真正需要的答案!
    猜你喜欢
    • 2014-07-30
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多