2013-05-07 42 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