2

我无法绘制我的数据集,希望有人能帮助我。它是一个 9X75 矩阵,由以下列组成:x1 y11 y12 y13 y14 x2 y21 y22 y23 y24 等...

我想绘制的是一个图上同一变量的所有 x 和所有相应的 y,例如:x1 y11。x2 y21, x3 y31 在一个数字上

在另一个图 x1 y12 上。x2 y22, x3 y32 在一个图形上,依此类推,直到全部绘制完毕。

到目前为止,这是我的代码:

  linespec = {'-ms','-rs','-bs','-ys','-gs','-ms','-rs','-bs','-ys',
  '-gs','-ms','-rs','-bs','-ys','-gs','-ms','-rs','-bs','-ys',
  '-gs','-ms','-rs','-bs','-ys','-gs','-ms','-rs','-bs','-ys','-gs','-ms',
  '-rs','-bs','-ys','-gs','-ms','-rs','-bs','-ys','-gs','-ms','-rs','-bs',
  '-ys','-gs','-ms','-rs','-bs','-ys','-gs','-ms','-rs','-bs','-ys','
  -gs','-ms','-rs','-bs','-ys','-gs','-ms','-rs','-bs','-ys','-gs','-ms',
  '-rs','-bs','-ys','-gs','-ms','-rs','-bs','-ys','-gs'};

  hold all

  for n=1:1:75
      for i=1:5:75
      plot(R(:,i),R(:,n+i),linespec{n})
     end
    figure 
  end

然而,当我运行它时,只有第一个图绘制了 15 个不同的对应 y,而其余的只绘制了一个 y 和 x 列,所有数字都重复相同的颜色。我做错了什么,我该如何改进?任何帮助和建议表示赞赏。

4

3 回答 3

2

首先:您的索引不会“超出范围”吗?R(:,n+i) = R(:,150), 当n = i = 75.

在我看来,hold all当您创建新人物时,它就像是“重置”。您是否尝试过将其放入循环中?

我相信以下应该有效:

for ii = 1:5:70
   for jj = 1:4
      hold on
      plot(R(:,ii),R(:,ii+jj),linespec{jj})
   end
   figure
end
于 2013-10-06T11:14:11.943 回答
1

这可能会起作用:

x = R(:,1:5:70);
for i = 1:5
    figure(i);
    y = R(:,i+1:5:i+70);
    for j = 1:15
        plot(x(:,j),y(:,j),linespec{i*j});
        hold on 
    end
end

每个图的 x 和 y 数据与 R 矩阵分开,因此更直接。

于 2013-10-06T11:13:54.820 回答
0

这是一个解决方案。首先,定义你的xas 它将用于每个图,然后遍历矩阵以制作 4 个图。

请注意,您可以定义一个向量,例如2:5:75不担心其结尾(向量在 72 处结束),并为创建的每个图形设置自定义颜色顺序(此处为 m、r、b、y、g)。您也可以设置set(0,'DefaultAxesColorOrder',[1 0 1;1 0 0;0 0 1;1 1 0;0 1 0])在所有 matlab 会话期间有效的颜色(影响所有要绘制的图)。

x = R(:, 1:5:75);         %x matrix

for ii = 2:5

    figure;
    y = R(:, ii:5:75);    %y matrix
    plot(x,y,'-s');       %plain line with square
    set(gcf,'DefaultAxesColorOrder',[1 0 1;1 0 0;0 0 1;1 1 0;0 1 0])

end
于 2013-10-06T14:24:18.650 回答