首页 > 解决方案 > 在 2d 绘图/投影中可视化网格 (gnuplot)

问题描述

在我的模拟中,我有两个相互重叠的数值网格。其中一个(较小的)不是矩形,而是有一个弯曲的边界(至少是我关心的区域)。

我想将这两个数字网格以及它们在 gnuplot 中如何相互重叠作为 2D 图可视化。结果应该类似于:

在此处输入图像描述

红色网格跨越整个区域,黑色网格是具有弯曲边界的红色网格的子集。蓝线是边界的近似值。

到目前为止,这看起来不错,除了这是一个 3D 图,我从上面看是完全正确的;即在 gnuplot 中,如果我愿意,我可以旋转它。

gnuplot> show view
    view is 0 rot_x, 270 rot_z, 1 scale, 1 scale_z

从这个角度看,z 轴的任何信息都是不可见的。它有点消除了 3D 绘图的原因,因为您所看到的只是数据所在的网格。而这正是我想要的。

但是,我宁愿有一个 2D 绘图,因为它们在 gnuplot 中处理效率更高,而且 gnuplot 在 3D 绘图周围产生巨大的边距,从而减少了可用区域。如何将此网格投影到 2D 平面并让 gnuplot 可视化它?


如何创建上图:我在整个网格上定义了一个变量,但仅在网格的黑色部分为非零(并且始终为正)。数据以通常的方式存储在文件“values.dat”中——在极坐标的三列中:

r(半径)--theta(极角)--值

然后你可以得到上面的情节:

set style line 1 lt 1 dt 3 lc rgb "red"
set style line 2 lt 1 lc rgb "black"
set view 0, 270, 1, 1
splot "values.dat" u 1:2:(1.0) w l ls 1, \
      "values.dat" u 1:2:($3>0.0?1.0:NaN) w l ls 2

图中的蓝线是附加的,来自网格边界的单独近似值,但与此处的问题并不真正相关。

标签: 3dgrid2dgnuplot

解决方案


gnuplot 命令

set view map

做我想要的。

从 gnuplot 文档中:

它支持将 3D 投影或正交 2D 投影到类似 2D 绘图的地图中。


推荐阅读