如何基于R生成的Voronoi tesselation多边形绘制对应N值3D条形图
可行实现方案推荐
优先推荐纯R实现方案,无需切换工具,学习成本最低,可快速得到符合要求的结果。
方案1:纯R实现
- 依赖包:
sf(处理空间多边形)、ggplot2(绘制2D Voronoi图)、rayshader(2D转3D效果) - 实现逻辑:
- 将你已经生成的Voronoi剖分结果转为
sf格式的空间多边形数据框,把关联值N作为属性列存入数据框 - 用
ggplot2绘制Voronoi平面填充图,将fill参数映射为N列,可根据需求调整配色,隐藏多余的坐标轴、图例元素 - 调用
rayshader::plot_gg()函数,设置height_aes = "fill",即可自动将填充色对应的N值映射为柱体高度,生成每个多边形对应高度的3D柱体效果。可通过scale参数调整柱体高度缩放比例,sunangle参数调整光照角度 - 调整到合适视角后用
render_snapshot()导出高清静态图,也可以用render_movie()导出旋转演示视频
- 将你已经生成的Voronoi剖分结果转为
方案2:R + Blender 实现(适合出版级高质感渲染需求)
- 优势:可自定义材质、光照、场景元素,渲染效果远优于编程生成的可视化结果
- 实现逻辑:
- 从R中导出每个Voronoi多边形的顶点坐标、对应
N值,存储为csv或json格式 - 在Blender中运行简短的Python批量处理脚本:遍历所有多边形数据,先按顶点坐标生成平面多边形,再根据
N值对平面做挤压操作,自动生成对应高度的3D柱体 - 自定义材质、添加环境光、调整相机视角后渲染导出即可
- 从R中导出每个Voronoi多边形的顶点坐标、对应
方案3:Python 实现(备选方案,适合熟悉Python栈的用户)
- 依赖库:
geopandas(处理空间多边形)、matplotlib/plotly(3D渲染) - 实现逻辑:
- 将Voronoi多边形转为
geopandas.GeoDataFrame格式,关联N值 - 用
matplotlib.collections.Poly3DCollection类拼接每个多边形的底面、挤压生成的侧面,形成完整3D柱体,高度映射为N值 - 若需要交互式查看效果,可改用
plotly.graph_objects.Mesh3d实现可拖拽旋转的3D交互效果
- 将Voronoi多边形转为
内容的提问来源于stack exchange,提问作者DigiPath
相关产品推荐
相关产品推荐

