samer@59: % multibar - Multiple bar plots with different domains. samer@59: % samer@60: % multibar :: plotfn, cells(pair([[N]->Dom],[[N]])), options -> handle. samer@60: % plotfn is any plotting function like bar, plot, area stairs etc samer@60: % that takes two arrays of X and Y values. samer@60: function h=multibar(F,D,varargin) samer@59: X=flatten(foldl(@union,[],map(@fst,D))); samer@60: h=F(X,cellcat(2,map(@(d)expand(X,d),D)),varargin{:}); samer@59: end samer@59: samer@59: function Y2=expand(X,Data) samer@59: Y2=maprows(@get_or_nan,X); samer@59: function y=get_or_nan(x) samer@59: [dummy,i]=find(Data{1}==x); samer@59: if isempty(i), y=nan; else y=Data{2}(i); end samer@59: end samer@59: end samer@59: samer@59: