-
Notifications
You must be signed in to change notification settings - Fork 1
/
fcsdensity_old.m
69 lines (61 loc) · 1.63 KB
/
fcsdensity_old.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
function out = fcsdensity_old(X,Y,varargin)
%FCSDENSITY makes a 2D heatmap of flow cytometry data.
%
% Created 20120807 JW
p = inputParser;
addRequired(p,'X',@isnumeric);
addRequired(p,'Y',@isnumeric);
addParameter(p,'xi',[],@isnumeric);
addParameter(p,'yi',[],@isnumeric);
addParameter(p,'nbins',[],@validate_nbins);
addParameter(p,'cmap',flipud(bone),@isnumeric);
addParameter(p,'plotstyle','density',@ischar);
addParameter(p,'plotoptions',{'.'},@iscell);
parse(p,X,Y,varargin{:});
xi = p.Results.xi;
yi = p.Results.yi;
nbins = p.Results.nbins;
cmap = p.Results.cmap;
plotstyle = p.Results.plotstyle;
plotoptions = p.Results.plotoptions;
if isempty(nbins)
% default: bin size adapted to plot pixel size
set(gca,'Units','pixels')
pos = get(gca,'position');
set(gca,'Units','normalized')
nx = floor(pos(3));
ny = floor(pos(4));
if strcmpi(plotstyle,'contour')
nx = nx./2;
ny = ny./2;
end
elseif numel(nbins)==1
nx = nbins(1);
ny=nx;
else
nx = nbins(1);
ny = nbins(2);
end
if isempty(xi)
xi = linspace(min(X),max(X),nx);
end
if isempty(yi)
yi = linspace(min(Y),max(Y),ny);
end
if strcmpi(plotstyle,'density')
density = hist3([X Y],{xi yi})./numel(X);
out = density;
pcolor(xi,yi,density')
shading flat
% surf(xi,yi,density','edgecolor','none')
% view([0 90])
colormap(cmap);
set(gca,'color',cmap(1,:));
elseif strcmpi(plotstyle,'contour')
p=gkde2([X Y]);
contour(p.x,p.y,p.pdf,20)
elseif strcmpi(plotstyle,'scatter');
plot(X,Y,plotoptions{:});
end
function out = validate_nbins(nbins)
isnumeric(nbins) && any(numel(nbins)==[1 2]);