在MATLAB中同时绘制和填充不同的多边形

时间:2010-05-31 16:44:42

标签: matlab plot polygon

我有以下代码。它将CSV文件加载到内存中。此文件包含不同多边形的坐标。此文件的每一行都有X,Y坐标和一个字符串,该字符串告诉该数据点属于哪个多边形。例如,名为“Poly1”且具有100个数据点的多边形在此文件中有100行,如:

Poly1,X1,Y1
Poly1,X2,Y2
...
Poly1,X100,Y100
Poly2,X1,Y1
.....

index.csv文件具有文件Polygons.csv中每个多边形的datapoint(行数)。这些细节并不重要。事情是: 我可以使用下面的代码成功提取每个多边形的数据点。 但是,当我绘制不同多边形的线条相互连接时,情节看起来很糟糕。我需要将多边形分开(它们连接并重叠一些区域)。我想通过使用“填充”我可以更好地看到它们。但是“填充”只是填充它可以找到的每个多边形,这是不可取的。我只想填充多边形。有人能帮我吗?如果有必要,我也可以发送给你我的数据点,它们不到200Kb。 谢谢

 
[coordinates,routeNames,polygonData] = xlsread('Polygons.csv');
index = dlmread('Index.csv');
firstPointer = 0
lastPointer = index(1)
for Counter=2:size(index)
    firstPointer = firstPointer + index(Counter) + 1
    hold on
    plot(coordinates(firstPointer:lastPointer,2),coordinates(firstPointer:lastPointer,1),'r-')
    lastPointer = lastPointer + index(Counter)
end


2 个答案:

答案 0 :(得分:2)

此解决方案可能适合您:

[coordinates,routeNames,polygonData] = xlsread('Polygons.csv');  %# Load the data
for polyName = unique(routeNames(:).')       %'# Loop over unique polygons
  polyIndex = ismember(routeNames,polyName);  %# Find index of polygon points
  x = coordinates(polyIndex,:);               %# Get x coordinates
  y = coordinates(polyIndex,:);               %# Get y coordinates
  patch(x,y);                                 %# Plot a patch
  hold on;                                    %# Add to the existing plot
end

这会使用PATCH函数创建多边形。要以不同方式为修补程序着色,请查看this MATLAB documentation

答案 1 :(得分:1)

我认为patch是绘制填充多边形的更好工具。 Check it out