我有一个点矩阵,名为start_coord
,其中包含它们的x和y坐标以及表示它们分类(1-5)的一列。例如,第一行看起来像[75, 100, 4]。
我使用以下代码计算了这些数据的voronoi图:
[vc_x, vc_y] = voronoi(start_coord(:,1), start_coord(:,2));
如何通过每个多边形中包含的点的分类值(即start_coord
中的第三列)对结果多边形进行着色?
编辑: 有人在下方评论中提供了一种快速绘制带颜色的多边形的答案,可供参考。如果要将数千个点的voronoi多边形写入可以保存为图像的数组,请参考以下代码:
new_map = zeros(sm_size(1), sm_size(2));
start_coord = readmatrix(char(join([csv_path, '/', run_types(run), common_name_csv], "")));
sc_size = size(start_coord);
dt = delaunayTriangulation(start_coord(:,1:2));
[V,R] = voronoiDiagram(dt);
for i = 1:sc_size(1)
A=V(R{i},:);
B=A(any(~isinf(A),2),:); % omit points at infinity
bw = poly2mask(B(:,1), B(:,2), sm_size(1), sm_size(2));
new_map(bw == 1) = color_map(start_coord(i,3));
end
new_map
可以保存为数组,或转换为 RGB 格式并保存为图片。
plot(polyshape(B),'FaceColor','green')
命令来设置颜色。 - L. Scott Johnsonhold on
。 - L. Scott JohnsonVoronoiLimit
的函数,它可以在边界处生成有用的顶点,而不是将它们全部设置为无穷大。不过我还没有测试过。链接已添加到上面的答案中。 - L. Scott Johnson