Added source Matlab code for reference
This commit is contained in:
parent
b8af977117
commit
b5d99903d2
186 changed files with 61405 additions and 1 deletions
92
matlab/graph/viewPopMixPartition.m
Normal file
92
matlab/graph/viewPopMixPartition.m
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
function viewPopMixPartition(partition, rows, popnames)
|
||||
%"Yksilön" leveys on verrannollinen yksilön rivien lukumäärään.
|
||||
|
||||
notEmptyPops = length(unique(partition));
|
||||
disp(['Number of populations: ' num2str(notEmptyPops)]);
|
||||
if notEmptyPops>30
|
||||
disp(' ');
|
||||
disp('Figure can be drawn only if the number of populations');
|
||||
disp('is less or equal to 30.');
|
||||
disp(' ');
|
||||
return;
|
||||
end
|
||||
|
||||
nind = length(partition);
|
||||
totalNumRows = 0;
|
||||
for ind = 1:nind
|
||||
totalNumRows = totalNumRows+rows(ind,2)-rows(ind,1)+1;
|
||||
%totalNumRows = totalNumRows+length(rows{ind});
|
||||
end
|
||||
%npops = max(partition);
|
||||
npops = notEmptyPops;
|
||||
|
||||
varit = giveColors(npops);
|
||||
korkeinviiva = 1.05;
|
||||
pieninarvo = -korkeinviiva;
|
||||
|
||||
h0 = figure('NumberTitle', 'off'); %image_figure; %Muutettu
|
||||
tiedot.rows = rows;
|
||||
tiedot.info = partition;
|
||||
tiedot.popnames = popnames;
|
||||
set(h0,'UserData',tiedot);
|
||||
|
||||
set(gca, 'Xlim', [-.5 ,totalNumRows+.5], 'YLim', [pieninarvo ,korkeinviiva], ...
|
||||
'XTick', [], 'XTickLabel', [], 'YTick', [], 'YTickLabel', []);
|
||||
|
||||
eiTyhjatPopulaatiot = unique(partition);
|
||||
|
||||
for i=1:nind
|
||||
pop = partition(i);
|
||||
pop = find(eiTyhjatPopulaatiot==pop);
|
||||
|
||||
% Pylväiden piirtäminen
|
||||
for rivi = rows(i,1):rows(i,2)
|
||||
h0 =patch([rivi-1, rivi, rivi, rivi-1], [0, 0, 1, 1], varit(pop,:));
|
||||
set(h0,'EdgeColor','none'); % Midevaa varten kommentoitava!
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
npops = size(rows,1);
|
||||
for i=1:npops
|
||||
firstRow = rows(i,1);
|
||||
line([firstRow-1, firstRow-1], [0,1], 'Color', 'k'); %Populaatioiden rajat
|
||||
end
|
||||
|
||||
if ~isempty(popnames)
|
||||
for i=1:npops
|
||||
%rivi = rows(i};
|
||||
%x_paikka = (rivi(1)-1+rivi(end))/2;
|
||||
x_paikka = (rows(i,1) - 1 + rows(i,2)) / 2;
|
||||
|
||||
korkeuskerroin = pieninarvo / -0.2;
|
||||
suhdekerroin = npops/6;
|
||||
for letter_num = 1:length(popnames{i,1}{1})
|
||||
letter= popnames{i,1}{1}(letter_num);%alter .004|
|
||||
text(x_paikka+korjaus(letter)*suhdekerroin, ...
|
||||
0.0005*korkeuskerroin-0.02*letter_num*korkeuskerroin, ...
|
||||
letter, 'Interpreter','none');
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
line([totalNumRows,totalNumRows],[0,1],'Color','k');
|
||||
|
||||
%-------------------------------------------------------------------------------------
|
||||
|
||||
function extra = korjaus(letter)
|
||||
if any(letter == 'ijlI')
|
||||
extra = 0.022;
|
||||
elseif any(letter == 'r')
|
||||
extra = 0.016;
|
||||
elseif any(letter == 'k')
|
||||
extra = 0.009;
|
||||
elseif any(letter == 'f')
|
||||
extra = 0.013;
|
||||
elseif any(letter == 't')
|
||||
extra = 0.014;
|
||||
elseif any(letter == 'w')
|
||||
extra = -0.003;
|
||||
else
|
||||
extra = 0;
|
||||
end;
|
||||
Loading…
Add table
Add a link
Reference in a new issue