0

这是我的情节代码。问题是我的情节中的两条线具有相同的颜色,我需要一个特殊的情节中的每一行(总共 4 行)。

for i=1:nFolderContents;
    [~, data] = hdrload(folderContents(i,:));
    if size(folderContents(i,:),2)<size(folderContents,2);
        temp=folderContents(i,6:9);
    else
       temp=folderContents(i,6:7);
    end
    temp1(i)=strread(temp);
    w=2*pi*(data([35 51 68 101],1));
    permfreespace=8.854e-12;
    perm=data([36 52 69 101],3);
    cond=perm.*w.*permfreespace;
    conds([36 52 69 101],i)=cond;
    hold on

end


figure(4);plot(temp1,conds);
gcf=figure(4);
set(gcf,'Position', [0 0 295 245]);
xlabel('Temperature [\circC]'), ylabel ('Conductivity [s/m]');
title('Different frequencies');
legend('1.02 GHz','1.50 GHz','2.01 GHz','3 GHz');
axis([20 52 0 4]);
box on 

新代码:

conds=zeros(101,28);
for i=1:nFolderContents;
    [~, data] = hdrload(folderContents(i,:));
    if size(folderContents(i,:),2)<size(folderContents,2);
        temp=folderContents(i,6:9);
  else
   temp=folderContents(i,6:7);
    end
    temp1(i)=strread(temp);
    w=2*pi*(data([35 51 68 101],1));
    permfreespace=8.854e-12;
    perm=data([36 52 69 101],3);
    cond=perm.*w.*permfreespace;
    conds([36 52 69 101],i)=cond;
    hold all

end
diff = hsv(101); 
for i=1:101
    figure(4),plot(temp1(1,:),conds(i,:),'color',diff(i,:));
    hold all;
end
gcf=figure(4);
set(gcf,'Position', [0 0 295 245]);
xlabel('Temperature [\circC]'), ylabel ('Conductivity [s/m]');
title('Different frequencies');
legend('1.02 GHz','1.50 GHz','2.01 GHz','3 GHz');
axis([20 52 0 4]);
box on 

问题是我现在在图例框中得到相同的颜色。

4

2 回答 2

1

conds您用 101 行(零)定义了变量,然后将 4 行更改为一些值。现在您只想绘制那 4 条线,但您的循环运行了 101 次,因此它还绘制了零线。这就是你得到一条零线的原因(实际上是 97 行......)。这也是您为 4 条曲线获得相同颜色的原因,可能是各种图形颜色,“浪费”在零线上。

您应该只运行循环 4 次,使用

rows=[36 52 69 101] ;
color='rgbc'
for i=1:4
   plot (temp(1,:), cond(rows(i),:), 'color',color(i));
   hold on
end 
hold off

实际上,您根本不需要这个conds=zeros(101,28),只需将插入值的行更正conds为:

conds=cond([36 52 69 101],:);

而且,我认为您在第一个循环中不需要它。

于 2013-07-05T01:52:50.227 回答
0

使用 HSV 获得不同的颜色:

diff = hsv(101); 
for i=1:101
    plot(temp1(1,:),conds(i,:), 'color',diff(i,:));
    hold on;
end
于 2013-07-04T17:31:35.900 回答