1

当我绘制该区域时,我无法摆脱这条不断出现的垂直线,这让我开始烦恼;

[x y] = ginputExtra(4)

x =    0.1947    0.6118    0.8329    0.4136    
y =    0.5746    0.8173    0.4225    0.3553

area([x x(1)],[y y(1)])
[x y] = ginputExtra(4,true)

x =    0.5087    0.6881    0.4954    0.3204    
y =    0.4961    0.2382    0.1566    0.3566

hold on;
area([x x(1)],[y y(1)],'FaceColor',[1 0 0])

面积图

有什么办法可以避免这条线?

顺便说一句:我使用的 ginputExtra 方法调用..

function [x y] = ginputExtra(n,booText)
% INPUT
% n:            Number of points to plot
% booText:      Boolean (default false) command to display point number in
%               the plot.

% Author:   Lasse Nørfeldt (Norfeldt) 
% Date:     2012-04-09

if nargin ==2
    bText = booText;
else
    bText = false;
end
H = gca;
set(H, 'YLimMode', 'manual'); set(H, 'XLimMode', 'manual');
set(H, 'YLim', get(H,'YLim')); set(H, 'XLim', get(H,'XLim'));

numPoints = n; xg = []; yg = [];
for i=1:numPoints
    [xi yi] = ginput(1);
    xg = [xg xi]; yg = [yg yi];
    if i == 1
        hold on;
        plot(H, xg(i),yg(i),'ro');
        if bText text(xg(i),yg(i),num2str(i),'FontSize',14); end
    else
        plot(xg([i-1:i]),yg([i-1:i]),'r');
        if bText text(xg(i),yg(i),num2str(i),'FontSize',14); end
    end    
end
hold off;

x = xg; y = yg;
4

1 回答 1

1

您的问题可能在于按 area() 进行绘图,因为它似乎主要用于堆叠多个 vecotrs。如果您稍微缩小一点并从蓝色区域的第一个点看到一条类似的垂直线,则区域函数很可能是问题所在。

功能:

fill([x x(1)],[y y(1)],COLOR)

可能会为您解决问题,因为它绘制了一个填充的多边形。

/托马斯

于 2012-04-12T11:14:13.853 回答