【问题标题】:Matlab: Graphing Multiple Vertical Bar PlotsMatlab:绘制多个垂直条形图
【发布时间】:2014-05-26 21:35:27
【问题描述】:

在我的情节中,我试图显示 5 个日期中每个日期的 6 个机场的平均延误时间。

这是我目前的代码:

F = dataset('xlsfile','Lab2_Delta');

DATES = {'11/26/2013','11/27/2013','11/28/20113','11/29/2013','11/30/2013'};
ORIGINS = {'CVG','ORD','ATL','LAX','MIA','DFW'};

for Index = 1:6
    for Index2 = 1:5
        Origin_Index = find(strcmp(F.Origin,ORIGINS(Index)));
        Date_Index = find(strcmp(F.Date,DATES(Index2)));
        Temps(Index2,Index) = mean(F.Delay(Date_Index));
    end
end

bar(1:5,Temps(:,Index)); hold on;

legend('CVG','ORD','ATL','LAX','MIA','DFW');
set(gca,'XTick',1:length(DATES));
set(gca,'XTickLabel',DATES);
ylabel('Mean Delay Times'); title('Delay Times Around Thanksgiving');

显示的图仅显示一个机场 (CVG) 的条形图。如何显示其他城市?

【问题讨论】:

  • 您能否发布一些我们可以试用的示例数据?
  • @darthbith 有没有办法上传我正在使用的数据集?
  • 您可以将其上传到任何文件共享服务... Dropbox,或 Skydrive 等。
  • onedrive.live.com/redir?resid=D93C61347F978474%21194 这是我正在使用的数据的链接

标签: matlab for-loop dataset bar-chart


【解决方案1】:

如果您可以构造一个矩阵Y,每个日期对应一行,每个机场对应一个列,那么bar(1:5,Y) 应该可以解决问题。

dates=1:5
delayCVG=rand(1,5);
delayMIA=rand(1,5)+1;
delayATL=rand(1,5)+2;
delayLAX=rand(1,5)+3;
delayDFW=rand(1,5)+4;
delayORD=rand(1,5)+5;

delay=[delayCVG' delayMIA' delayATL' delayLAX' delayDFW' delayORD'];

bar(dates,delay)

【讨论】: