如何"作物"将MATLAB绘制成三角形图?

时间:2015-02-04 09:27:33

标签: matlab matlab-figure

我有一个2D散点图,其中所有点实际上都保证落入等边三角形。所以我希望" crop"感兴趣的区域,即三角形,在默认的方形x-y系统之外。

enter image description here

我怎么能这样做?如果提供的方法可以很容易地扩展到正方形,等边五边形等,那就更好了。

P.S。:等边三角形的顶点为[[0 0.577350269189626];[0.500000000000000 -0.288675134594813];[-0.500000000000000 -0.288675134594813]]

1 个答案:

答案 0 :(得分:2)

使用inpolygon检测多边形内的哪些点。这适用于任何多边形,而不仅仅是三角形。然后,您可以删除轴并使用patch手动绘制多边形,以产生所需的效果。

%// Define data:
x = rand(1,1000)-.5;
y = rand(1,1000)*.9-.3;
p = [0 0.577350269189626;
     0.500000000000000 -0.288675134594813;
     -0.500000000000000 -0.288675134594813];

%// Plot data before cropping
figure
plot(x,y,'o');

%// Select points inside the polygon:
ind = inpolygon(x,y,p(:,1),p(:,2));

%// Plot data after cropping
figure
plot(x(ind),y(ind),'o');

%// Plot cropped data with polygon and without axes:
figure
patch(p(:,1), p(:,2), 'w', 'edgecolor', 'r') %// polygon white background and red border
hold on
plot(x(ind),y(ind),'o'); %// plot points after polygon
axis off %// remove axes

以下是三个示例数字:

enter image description here

enter image description here

enter image description here