2013-03-18 557 views
3

我已經在matlab中執行了多維聚類分析。對於每個集羣,我計算了均值和協方差(假設條件獨立)。將帶誤差條的點添加到Matlab散點圖中

我從我的原始數據中選擇了兩個或三個維度,並將其繪製成散點圖或散點圖。 現在我想將cluster-means和相應的標準偏差添加到同一個圖中。

換句話說,我把一些帶誤差線的數據點添加到散點圖中。

This question幾乎是我想要的。但是我可以用條而不是盒子,我想知道在這種情況下是否有一種內置的方式可以用較少的努力來完成。

有關如何做到這一點的任何建議?

回答

0

如果你對圖表看起來不太挑剔,並且正在尋找性能,內置函數通常是一個不錯的選擇。

我的第一個想法是嘗試使用boxplot,它有相當多的選項,所以可能它們的組合會給你你需要的結果。

旁註:乍一看,你提到的答案看起來效率不高,所以當談到可實現的加速時,你可能不得不管理你的期望。

+0

對不起,不具體。我不是在談論執行速度,而是在編程方面。定義一個函數只是爲了得到一個錯誤框似乎對我來說有點多。 – 2013-09-25 14:18:33

+0

@Konstantin我可以想象,你不想爲每個功能添加一個函數,但是如果它已經被某人寫了,它不需要太多的努力來複制它。 – 2013-09-25 14:24:54

+0

問題是,我期待matlab有內置的東西。這會更容易,因此也是一個問題。 – 2013-09-25 19:49:54

2

一旦您意識到線段可能足以達到您的目的(並且可能不像通常的鬍鬚的誤差棒,取決於點數),您可以做一些非常簡單的事情(這可能適用於任何繪圖軟件包,而不僅僅是MATLAB)。

只需繪製一個散點圖,然後編寫一個循環來繪製所有想要對應於誤差線的線段(或者按照相反的順序來繪製它,就像我先用誤差線先散點圖一樣,這取決於您是否想要點或你的錯誤欄上)。

下面是一個簡單的MATLAB代碼,以示值誤差棒在二維的例子圖(抱歉近線性的無聊)一起:

enter image description here

正如你所看到的,你可以繪製錯誤每個軸以不同顏色顯示,以幫助可視化。

function scatterError(x, y, xe, ye, varargin) 
%Brandon Barker 01/20/2014 

nD = length(x); 

%Make these defaults later: 
dotColor = [1 0.3 0.3]; % conservative pink 
yeColor = [0, 0.4, 0.8]; % bright navy blue 
xeColor = [0.35, 0.35, 0.35]; % not-too-dark grey 
dotSize = 23; 

figure(); 
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure. 
set(gca, 'FontSize', 23); 
hold all; 

for i = 1:nD 
    plot([(x(i) - xe(i)) (x(i) + xe(i))], [y(i) y(i)], 'Color', xeColor); 
    plot([x(i) x(i)], [(y(i) - ye(i)) (y(i) + ye(i))], 'Color', yeColor); 
end 

scatter(x, y, dotSize, repmat(dotColor, nD, 1)); 
set(gca, varargin{:}); 
axis square; 

隨着一些額外的工作,如果你真的想要它們,將錯誤添加到你的錯誤條中並不難。