我想在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>
答案 0 :(得分:3)
您似乎想要为每一行添加不同的颜色。在这种情况下,我建议:
figure
hold all
for j=1:n
plot(j,total,'-*')
end
有关hold all
和hold 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)
这会自动为每一行设置不同的颜色