2011-07-21 166 views
1

我已經設置的(矩陣NX1)此點(矩陣NX1)。我想繪製這個點(沒有問題,我這樣做:plot(points, groups, 'o');),但我想爲每個組設置獨特的顏色。我怎樣才能做到這一點?現在我只有兩個組(1,2)。MATLAB情節不同顏色

+0

你所說的 「羣體」 是什麼意思? –

+0

我的意思是,我有例如100點的[0..10],如果點<= 5它是組是一,否則兩個。組 - 它是座標 – Yekver

回答

3

使用邏輯索引選擇要

figure; 
hold all; % keep old plots and cycle through colors 

ind = (groups == 1); % select all points where groups is 1 

% you can do all kind of logical selections here: 
% ind = (groups < 5) 

plot(points(ind), groups(ind), 'o'); 
+0

好的,如果點和組的維度是兩個,我應該怎麼做?我怎樣才能只用第一列繪製一個情節(點(ind),組(ind),'o'); – Yekver

+0

@Yekver:我不知道我是否明白你想要什麼。您可以通過'points(ind,1)'索引第一列的所有行。如果你想從矩陣的第一列創建一個索引向量,你可以使用'ind =(groups(:,1)== 1);' – groovingandi

+0

'points(ind,1)' - 這有幫助!非常感謝! – Yekver

0

假設組的數量是已知的先驗:

plot(points(find(groups == 1)), groups(find(groups == 1)), points(find(groups == 2)), groups(find(groups == 2))); 

find會給你的groups對於該條件成立的所有指數。對於每個可能的值groups,可以使用find的輸出作爲pointsgroups的子向量。

當您使用plot繪製多個x-y組合時,它將爲每個組合使用不同的顏色。

或者,你可以只選擇每一個顏色明確:

hold on 
plot(points(find(groups == 1)), groups(find(groups == 1)), 'r') 
plot(points(find(groups == 2)), groups(find(groups == 2)), 'y') 

最後,還有一個方式,通過顏色的自動告訴陰謀循環,這樣就可以調用plot不指定顏色,但該方法逃避我。

+0

如果您設置了「全部保留」,則每次調用繪圖時它都會添加到同一數字,但會循環顯示默認的顏色映射和線條樣式。 – Step

2

鑑於一些隨機數據點:

points = randn(100,1); 
groups = randi([1 2],[100 1]); 

這裏有一些更一般的建議:

g = unique(groups);   %# unique group values 
clr = hsv(numel(g));   %# distinct colors from HSV colormap 
h = zeros(numel(g),1);  %# store handles to lines 
for i=1:numel(g) 
    ind = (groups == g(i)); %# indices where group==k 
    h(i,:) = line(points(ind), groups(ind), 'LineStyle','none', ... 
     'Marker','.', 'MarkerSize',15, 'Color',clr(i,:)); 
end 
legend(h, num2str(g,'%d')) 
set(gca, 'YTick',g, 'YLim',[min(g)-0.5 max(g)+0.5], 'Box','on') 
xlabel('Points') ylabel('Groups') 

scatter_lines

如果你有機會到統計工具箱,還有就是簡化了所有上述的一個調用的函數:

gscatter(points, groups, groups) 

最後,在這種情況下,這將是更適合顯示Box plot

labels = num2str(unique(groups),'Group %d'); 
boxplot(points,groups, 'Labels',labels) 
ylabel('Points'), title('Distribution of points across groups') 

boxplot