3d - 在 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
图中的蓝线是附加的,来自网格边界的单独近似值,但与此处的问题并不真正相关。
解决方案
gnuplot 命令
set view map
做我想要的。
从 gnuplot 文档中:
它支持将 3D 投影或正交 2D 投影到类似 2D 绘图的地图中。
推荐阅读
- android - 使用 RxJava 的 Android Room:使用循环从 Room 获取数据
- github - 将图像添加到 Github 自述文件
- pytorch - torch 无法在 GPU 上分配小尺寸张量(< 1GB),但它可以用于同一节点上的 CPU,在数据块上具有 400+ GB 内存
- flutter - 如何捕捉“无法加载资产:资产/图像/sample_img_url.png”
- amazon-web-services - Elasticsearch 索引不断丢失
- html - 使用没有任何名称/ID 的 VBA 从网站上的表中提取值
- python - 确定 pandas 列中的共同值
- sql - 如何在 SQL 中设置滚动的 7 天第 75 个百分位数?
- arrays - 分段错误(核心转储)需要建议
- mongodb - MongoDB 不确定如何在聚合查询中过滤输出