2013-05-07 112 views
1

您可以忽略程序的前几个部分,因为这只是一个设置,您可以转到它为您提供第一个选项的部分。所以我试图做的是制作一个fifa球队的条形图和他们拥有的积分数量。数据集是一个50x9的矩阵。我试图让它图表列的所有行(这是点的数量)的第4列。但我一直遇到一个错误。我从来没有做过条形图,所以我不知道这是如何工作的。我感谢你们可以给我的任何投入。如何从数据集中在matlab中创建图形?

fprintf('*loading dataset...\n'); 
fprintf('*analyzing dataset...\n'); 
data=dataset('File', 'thegrid2.txt', 'Delimiter', ','); 
[rows cols] = size(data); 

choice= menu('What would you like to see master?:', 'Graph 1', 'Graph 2', 'Graph 3', 'OR Graph 4') 

if choice== 1 
    x= 1:1:50; 
    y= data(1:rows, cols-5); 
    bar(x,y) 
    title([ 'Countries vs. the amount of points: ']) 
    set(gca, 'Xtick', 1:1:50); 
    set(gca,'XTickLabel', {'ESP','GER','ARG','CRO','POR','COL','ENG','ITA','NED','ECU','RUS','CIV','GRE','MEX','SUI','BEL','URU','FRA','BRA','DEN','BIH','GHA','CHI','SWE','CZE','MLI','MNE','USA','JPN','NOR','NGA','PER','HUN','ROU','ALG','VEN','UKR','PAN','IRL','SRB','TUN','KOR','PAR','TUR','ZAM','AUS','CRC','ALB','WAL','BFA'}); 
end 

回答

1

首先我会用阴谋和barhbar,如果你有50(!)标签打印。 其次,如果您只需要绘制第四列,请使用y= data(:,4);。例如:

data=rand(50,5); 
x= 1:1:50; 
y= data(:,4); 
barh(x,y) 
title([ 'Countries vs. the amount of points: ']) 
set(gca, 'Ytick', 1:1:50); 
set(gca,'YTickLabel', {'ESP','GER','ARG','CRO','POR','COL','ENG','ITA','NED','ECU','RUS','CIV','GRE','MEX','SUI','BEL','URU','FRA','BRA','DEN','BIH','GHA','CHI','SWE','CZE','MLI','MNE','USA','JPN','NOR','NGA','PER','HUN','ROU','ALG','VEN','UKR','PAN','IRL','SRB','TUN','KOR','PAR','TUR','ZAM','AUS','CRC','ALB','WAL','BFA'}); 
ylim([0 51]) 

enter image description here

+0

我得到这个错误,但是当我尝试使用的数据集/ subsrefParens(9号线),我的数据集错误 数据集数组下标必须是二维的使用它。 数据集/子参数(第69行)中的错误 [varargout {1:nargout}] = subsrefParens(a,s); xychk错误(行95) if isvectorY,y = y(:);结束 错误barh(第54行) [msg,x,y] = xychk(args {1:nargs},'plot'); FINALPROJECT(第12行)中的错误 barh(x,y) – polishusar 2013-05-07 17:18:31

+0

好像您的数据集不是标准的。尝试通过'data = double(data)'转换为双精度。 – bla 2013-05-07 18:00:31