一次绘制多条线

时间:2013-07-20 15:01:44

标签: matlab vector plot

我想在matlab中的同一个图上绘制多行。我找不到最简单的方法。目前我有这样的事情:

for j=1:n
plot(j,total,'*')
hold on
end
每次迭代中的

total更改以及j。这将使我想要的情节,但用'*'代替线。我想加入这些星号,并为每种颜色添加一条线。请注意,total是一个长度为k的向量,因此在每次迭代中我都有k个星号。

例如:

迭代1:j = 1,总数= [0.2000 0.6000 0.2000]'

迭代2:j = 2,总= [0.1000 0.6000 0.3000]'

迭代3:j = 3,总数= [0.2095 0.4476 0.3429]'

X轴是1,2,3,Y轴应该有0.2,0.1,0.2095连接线和这些点上的星号,0.6,0.6,0.4476用不同的颜色线和星号等连接。< / p>

4 个答案:

答案 0 :(得分:3)

您似乎想要为每一行添加不同的颜色。在这种情况下,我建议:

figure
hold all
for j=1:n
    plot(j,total,'-*')
end

有关hold allhold on之间的差异,请参阅http://www.mathworks.com/help/matlab/ref/hold.html

有关如何指定线条样式的信息,请访问http://www.mathworks.com/help/matlab/ref/linespec.html

根据有关数据的其他信息,示例代码为:

nData = 3;
dataset = zeros(n,nData);
for j = 1:n
    dataset(j,:) = total';
end

x = 1:n;
plot(x,dataset,'-*');
legend('data set 1','data set 2','data set 3')

在这种情况下,hold不是必需的,因为所有数据都是一次性绘制的。

答案 1 :(得分:1)

您可能会发现使用较低级别的功能更容易。设置一些轴,然后在每次迭代时生成一个新的线对象(这通常比调用绘图更快)。下面的代码将在每次迭代的同一组轴上生成一条新线,从蓝色到红色逐渐着色。我假设你每次都可以从j生成XVec:

myAx = axes;
for j=1:n
lineCol = [(j-1)/(n-1) 0 (1-((j-1)/(n-1)))];
line('XData',XVec(j,:),'YData',total,'color',lineCol,'linestyle','-','marker','*','Parent','myAx');
end

这消除了对hold命令的需要。

答案 2 :(得分:0)

尝试:

plot(j,total,'-*');

-之前的*表示使用一行和一个星号。

另外,在循环开始之前放置hold on会更简洁,因为你只需要它一次。

答案 3 :(得分:0)

将所有数据作为列放在矩阵中:

j = 1:5;

data1 = [1 2 3 4 5];
data2 = [5 4 3 2 1];
data3 = [4 6 2 8 3];

y = [ data1; data2; data3 ].';
plot(j,y)

这会自动为每一行设置不同的颜色