我有一个2D散点图,其中所有点实际上都保证落入等边三角形。所以我希望" crop"感兴趣的区域,即三角形,在默认的方形x-y系统之外。
我怎么能这样做?如果提供的方法可以很容易地扩展到正方形,等边五边形等,那就更好了。
P.S。:等边三角形的顶点为[[0 0.577350269189626];[0.500000000000000 -0.288675134594813];[-0.500000000000000 -0.288675134594813]]
。
答案 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
以下是三个示例数字: