diff toolboxes/MIRtoolbox1.3.2/somtoolbox/som_stats_plot.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolboxes/MIRtoolbox1.3.2/somtoolbox/som_stats_plot.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,144 @@
+function som_stats_plot(csS,plottype,varargin)
+
+%SOM_STATS_PLOT Plots of data set statistics.
+%  
+% som_stats_plot(csS, plottype, [argID, value, ...])
+%
+%  som_stats_plot(csS,'stats')
+%  som_stats_plot(csS,'stats','p','vert','color','r')
+%
+%  Input and output arguments ([]'s are optional): 
+%   csS         (cell array) of statistics structs
+%               (struct) a statistics struct
+%   plottype    (string) some of the following
+%                        'hist'   histogram
+%                        'box'    min, max, mean, and std shown as a boxplot
+%                        'stats'  both histogram (with black) and the boxplot
+%   [argID, (string) See below. The values which are unambiguous can 
+%    value] (varies) be given without the preceeding argID.
+%
+% Here are the valid argument IDs and corresponding values. The values which
+% are unambiguous (marked with '*') can be given without the preceeding argID.
+%   'counts'      *(string) 'c' (for counts, the default) or 'p' (for percentages)
+%   'color'        (vector) size 1 x 3, color to be used
+%                  (string) a color string
+%   'title'        (string) 'on' (default) or 'off'
+%   'orientation' *(string) 'horiz' or 'vert' (default): orientation for the 
+%                           bin values (horizontally or vertically)
+%
+% See also  SOM_STATS, SOM_STATS_TABLE, SOM_TABLE_PRINT, SOM_STATS_REPORT.
+
+% Contributed to SOM Toolbox 2.0, December 31st, 2001 by Juha Vesanto
+% Copyright (c) by Juha Vesanto
+% http://www.cis.hut.fi/projects/somtoolbox/
+
+% Version 2.0beta juuso 311201
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% arguments
+
+% statistics
+if isstruct(csS), csS = {csS}; end
+
+% default values
+useprob   = 0; 
+color     = [0 0 1];
+showtitle = 1; 
+horiz     = 0; 
+
+% varargin
+i=1; 
+while i<=length(varargin), 
+  argok = 1; 
+  if ischar(varargin{i}), 
+    switch varargin{i}, 
+     % argument IDs
+     case 'counts',      i=i+1; useprob = strcmp(varargin{i}(1),'p'); 
+     case 'color',       i=i+1; color = varargin{i}; 
+     case 'title',       i=i+1; showtitle = strcmp(varargin{i},'on');
+     case 'orientation', i=i+1; horiz = strcmp(varargin{i},'horiz'); 
+     % unambiguous values
+     case {'horiz','vert'}, horiz = strcmp(varargin{i},'horiz'); 
+     case {'c','p'}, useprob = strcmp(varargin{i}(1),'p'); 
+     otherwise argok=0; 
+    end
+  elseif isstruct(varargin{i}) & isfield(varargin{i},'type'), 
+    argok = 0; 
+  else
+    argok = 0; 
+  end
+  if ~argok, 
+    disp(['(som_stats_plot) Ignoring invalid argument #' num2str(i+2)]); 
+  end
+  i = i+1; 
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
+%% action
+
+ss = ceil(sqrt(length(csS))); ss = [ss, ceil(length(csS)/ss)];
+
+for j = 1:length(csS), 
+    sS = csS{j};    
+    subplot(ss(1),ss(2),j);
+    switch plottype, 
+    case 'stats',
+        cla, hold on
+        Counts = sS.hist.counts; 
+        if useprob, for i=1:size(Counts,2), Counts(:,i) = Counts(:,i)/sum(Counts(:,i)); end, end
+        hist_plot(sS.hist.bins,sS.hist.binlabels,Counts,color);
+        box_plot(sS.min,sS.max,sS.mean,sS.std,[0 0 0]);
+    case 'hist',
+        cla, hold on
+        Counts = sS.hist.counts; 
+        if useprob, for i=1:size(Counts,2), Counts(:,i) = Counts(:,i)/sum(Counts(:,i)); end, end
+        hist_plot(sS.hist.bins,sS.hist.binlabels,Counts,color);
+    case 'box', 
+        cla
+	box_plot(sS.min,sS.max,sS.mean,sS.std,color);    
+    end
+    if showtitle, title(sprintf('%s (valid: %d/%d)',sS.name,sS.nvalid,sS.ntotal)); end
+    if ~horiz, view(90,-90); end
+    a = axis; a(1) = sS.min; a(2) = sS.max; axis(a); 
+end
+
+return;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
+%% subfunctions
+
+function hist_plot(bins,binlabels,Counts,color)
+    
+    if nargin<4, color = jet(size(Counts,2)); end
+    h = bar(bins,Counts);
+    for j=1:length(h), set(h(j),'facecolor',color(j,:),'edgecolor','none'); end
+    a = axis; a(3:4) = [0 max(Counts(:))]; axis(a);
+    set(gca,'XTick',bins,'XTickLabel',binlabels);
+    return;
+
+function vstr = numtostring(v,d)
+
+    nearzero = (abs(v)/(max(v)-min(v)) < 10.^-d);
+    i1 = find(v > 0 & nearzero); 
+    i2 = find(v < 0 & nearzero);     
+    vstr = strrep(cellstr(num2str(v,d)),' ','');
+    vstr(i1) = {'0.0'};
+    vstr(i2) = {'-0.0'};
+    return;
+
+function box_plot(mi,ma,me,st,Color)
+
+    if nargin < 5, Color = jet(length(mi)); end
+    a = axis;      
+    y = linspace(a(3),a(4),length(mi)+2); y = y(2:end);
+    d = (y(2)-y(1))/20;   
+    for i=1:length(mi),
+        h1 = line([mi(i) ma(i)],[y(i) y(i)]); 
+        h2 = line([mi(i) mi(i) NaN ma(i) ma(i)],[y(i)-d y(i)+d NaN y(i)-d y(i)+d]); 
+        h3 = line([me(i)-st(i) me(i)+st(i)],[y(i) y(i)]); 
+        h4 = line([me(i) me(i)],[y(i)-2*d y(i)+2*d]); 
+        set([h1 h2 h3 h4],'color',Color(i,:));
+        set([h1 h2],'linewidth',1);
+        set([h3 h4],'linewidth',3);
+    end 
+    return;