在MATLAB中绘制许多未连接的线

时间:2016-07-25 08:19:46

标签: matlab plot matlab-figure

我需要在MATLAB中绘制很多未连接的线。这段代码将使用for循环:

x = 1:5;
y = 10:-2:2;
figure;
hold on;
for ii = 1:5
    plot([0,x(ii)],[0,y(ii)],'b-');
end

是否可以在不使用for循环的情况下执行相同的操作?

用例:我正在尝试可视化树,并且要绘制许多行。我想预先计算所有行的终点并调用plot或等效一次。这就是我使用scatter来显示树的节点。

2 个答案:

答案 0 :(得分:2)

您可以在绘图时使用NaN断开线条。因此,您可以将xy值与NaN - 相同长度的向量相连,然后将reshapeNaN相连,以便xoyo断开各个段之间的线路。

为了使代码普遍适用,我们引入xp = reshape([ones(size(x))*xo;x;NaN(size(x))],1,[]); yp = reshape([ones(size(y))*yo;y;NaN(size(y))],1,[]); xp作为原点的坐标。现在,要绘制的点可以如下计算:

x = 1:5;
y = 10:-2:2;

figure;
xo = 0;     % x-coordinate of origin
yo = 0;     % y-coordinate of origin
xp = reshape([ones(size(x))*xo;x;NaN(size(x))],1,[]);
yp = reshape([ones(size(y))*yo;y;NaN(size(y))],1,[]);
plot(xp,yp,'b-');

res, err := http.Head("https://golang.org") if err != nil { panic(err) } contentlength:=res.ContentLength fmt.Printf("ContentLength:%v",contentlength) - 矢量现在看起来像这样:

0   1   NaN    0   2   NaN    0   3   NaN    0   4   NaN    0   5   NaN
└ origin           └ end point of segment 2           └ to disconnect lines

产生与您的问题相同的结果的整个代码如下:

ParticleSystem

答案 1 :(得分:1)

另一种解决方案:

plot([zeros(1,length(x));x],[zeros(1,length(x));y],'r-')