4

使用gnuplot绘制山体阴影图

 2 years ago
source link: http://jerkwin.github.io/2022/04/30/%E4%BD%BF%E7%94%A8gnuplot%E7%BB%98%E5%88%B6%E5%B1%B1%E4%BD%93%E9%98%B4%E5%BD%B1%E5%9B%BE/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

使用gnuplot绘制山体阴影图|Jerkwin

使用gnuplot绘制山体阴影图

类别:    标签: gnuplot   阅读次数: 5  版权: (CC) BY-NC-SA

  • 2022-04-30 09:37:59

在使用三维数据绘制热图, 高程图或形貌图(也称景观图)时, 一般会使用颜色映射. 如果所用绘图程序支持3D渲染, 可以直接绘制3D图并开启灯光进行渲染, 这样得到的图看起来更真实. gnuplot虽然支持3D绘制也可以设置灯光进行渲染, 但效果并不出众, 所以一般不怎么用它来做比较复杂的3D效果图.

以前在使用gnuplot绘制地图时, 我曾提到, 在地图绘制中常使用拟3D的作法来表现地形的高低起伏, 坡度变化. 这种图英文称为hillshade, 中译为山体阴影图, 坡度图或晕染图. 采用这种方式绘制的地图有一定的立体感, 虽然精确度相比直接的颜色映射图有所降低, 但更直观, 看起来也更精致些.

山体阴影图的具体的原理和计算方法可以参考以下资料, 这里就不多啰嗦了:

本质上, 这是一种最简单的光照模型, 模拟了平行光照射下高低山坡所留下的阴影. 我觉得将其用于MD论文中常见的自由能形貌图可能比较合适, 这样得到的图可能更直观, 效果也可能会有提升. 所以我就尝试使用gnuplot绘制这种图. 如果可行, 可以考虑将其集成到我的xpm2all脚本中.

照arcgis的说明英文 中文实现即可, 没什么难度. 需要指出的是, 对于示例说明给出的数据

2450 2461 2483
2452 2461 2483
2447 2455 2477

最后所给的结果不对, 因为有个数值代入错了.

绘制的时候涉及到不同颜色的混合. 颜色混合, 透明度混合的原理, 可以参考:

颜色的混合模式有很多, 可以参考Photoshop中的图层功能, 以下是一些说明:

gnuplot暂时不支持比较复杂的颜色混合, 需要自己写函数来实现, 具体的方法可以参考:

现在来看看添加山体阴影对不同数据的效果.

使用matlab的peak函数

z=3(1−x)2e−x2−(y+1)2−10(x5−x3−y5)e−x2−y2−13e−(x+1)2−y2

x, y范围[-4:4], 步长0.05.

下面为绘制的原始填色图, 山体阴影图, 以及二者的混合图(填色图透明度60%).

hillshade-1.png

对这种连续, 变化不显著的数据, 添加山体阴影后效果并没有太大提高.

下面是山东临沂地区的高程数据, 混合比例80%.

hillshade-2.png

对这种实际地形数据, 添加山体阴影有一定效果, 毕竟这种方法就是为了更好地展示这种数据而设计的.

自由能数据

简单的1crn蛋白水溶液模拟, 使用RMSD和回旋半径做分量, gmx sham计算自由能数据. 由于模拟时间很短, 所得自由能分辨率不高, 波动很大, 所以进行了简单的平滑. 混合比例80%.

hillshade-3.png

看起来效果还可以, 比直接的填色图格调高一格吧, 用在论文中应该有一定效果.

类似这种模式的图还可以有其他的扩展, 可以参考下面的一些说明:

随意赞赏
pay_wx.jpg
微信
pay_ali.jpg
支付宝

◆本文地址: https://jerkwin.github.io/2022/04/30/使用gnuplot绘制山体阴影图/, 转载请注明◆
◆评论问题: https://jerkwin.herokuapp.com/category/3/博客, 欢迎留言◆前一篇: 力场拟合工具xff开发杂记
后一篇: 分子模拟之道公益讲座


molsimart.png

访问人次(2015年7月 9日起): 1136856 | 最后更新: 2022-04-30 13:50:47 UTC | 版权所有 © 2008 - 2022 Jerkwin


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK