How to colour code polygons by area?
2 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I have generated a Voronoi diagram and calculated the areas of the polygons formed. I now want to colour code my polygons by area, for example, for areas between 10-20, colour this red. Then 20-30 blue... etc. Ideally, I would like to have a continous colour fade from smallest-largest polygon area. Could someone please shed some light on how to do this. I have currently used the patch(x,y,c) function, but this does not colour by area. Thanks in advance.
0 件のコメント
採用された回答
Mike Garrity
2015 年 10 月 23 日
Let's start with the Voronoi diagram with color example from the documentation. It shows using the index i as the color argument to patch. What we need to do is replace that with the area of the polygon. The polyarea function will compute that. It takes the same X & Y coordinates that patch wants. So it simply looks like this:
x = gallery('uniformdata',[10 2],5);
[v,c] = voronoin(x);
for i = 1:length(c)
if all(c{i}~=1)
x = v(c{i},1);
y = v(c{i},2);
a = polyarea(x,y);
patch(x,y,a);
end
end
Here's a more interesting example:
rng default
figure('Position',[100 100 500 600])
pts = randn(500,2);
[v,c] = voronoin(pts);
for i = 1:length(c)
if all(c{i}~=1)
x = v(c{i},1);
y = v(c{i},2);
a = polyarea(x,y);
patch(x,y,a);
end
end
hold on
scatter(pts(:,1),pts(:,2),40,[.9 .1 .1],'Marker','+','MarkerEdgeAlpha',.5)
colorbar('SouthOutside')
axis equal
xlim([-3 3])
ylim([-3 3])
caxis([0 2])
その他の回答 (1 件)
Image Analyst
2015 年 10 月 22 日
It's easy to do if you convert it to an image. Just call bwlabel(), regionprops(), sort(), and intlut(). Do you have the Image Processing Toolbox.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Voronoi Diagram についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!