如何在R中绘制带填充的Delaunay三角剖分图(类似Voronoi图,以iris为例)
基于鸢尾花数据集绘制带变量填充的Delaunay三角剖分图
已完成的Voronoi剖分填充图
以鸢尾花(iris)数据集为例,借助ggplot2和ggforce包,我已经实现了按Petal.Length(花瓣长度)填充颜色的Voronoi剖分图,代码如下:
# 带颜色填充的Voronoi剖分图 ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_voronoi_tile(aes(fill = Petal.Length))
(效果图为:以花萼长度和宽度为坐标,每个Voronoi多边形颜色随花瓣长度渐变的可视化图)
问题:Delaunay三角剖分的填充映射失败
我尝试用类似逻辑绘制Delaunay三角剖分图,希望三角形也能按Petal.Length填充颜色,但运行代码后无法得到预期效果:
# 尝试绘制带填充的Delaunay三角剖分图 ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_delaunay_tile(aes(fill = Petal.Length))
(效果图为:Delaunay三角形已生成,但填充颜色未按花瓣长度正确映射)
解决方案:正确映射填充变量的Delaunay绘图代码
要让Delaunay三角形按指定变量填充,需要使用stat_delaunay并明确设置分组和几何对象,确保填充变量能关联到每个三角形。以下是可行代码:
# 按Petal.Length填充的Delaunay三角剖分图 ggplot(iris, aes(Sepal.Length, Sepal.Width)) + stat_delaunay( aes(fill = Petal.Length, group = -1L), geom = "polygon", alpha = 0.8 # 可选:调整透明度 ) + scale_fill_viridis_c(option = "plasma") # 可选:使用渐变色彩方案
说明
group = -1L参数确保所有生成的三角形被正确识别为独立多边形stat_delaunay会基于原始数据点生成Delaunay三角剖分,并将每个三角形与顶点对应的Petal.Length关联,默认取顶点数值的均值作为填充依据- 可以通过
scale_fill_*系列函数调整颜色渐变样式,优化可视化效果
内容的提问来源于stack exchange,提问作者Myriad
相关产品推荐
相关产品推荐

