[英]gnuplot: Contour plot of a scattered data set
我有一个由7列和超过8000万行( 数据文件 )组成的分散数据文件。 我想绘制这些数据的轮廓。 我要绘制的列是第一个,第二个和最后一个(第七个),给出如下的二维和三维图:
正视图:
边缘视图:
而简单的3D:
从第二个图可以看出,第一个问题是点聚集在2d区域的特定位置,即最小的区域,可以在3d图中看到。 但是,其次,这些点随机分布在平面上(第二个图),我想我不能使用矩阵表示来绘制iso-z的轮廓。
是否可以使用gnuplot set contour base
和cntrparam 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.