% Teploty
% -------
% V tabulce jsou uvedeny průměrné měsíční teploty v Brně v roce 2016
% a~dlouholeté minimální a maximální měsíční průměry.
load teploty

% Jak vykreslit průběh teplot v čase?
plot(prumerne_teploty, 'o-')
hold on
plot(min_teploty, '*--')
plot(max_teploty, 'd:')

legend('pruměrná', 'minimální', 'maximální')
ax = axis;
ax(2) = 13;
axis(ax);
set(gca, 'XTick', 1:12)
set(gca, 'XTickLabel', mesice)
set(gca, 'XTickLabelRotation', 45)

xlabel('Měsíc')
ylabel('Teplota v °C')
title('Průběh teplot')
% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'prubeh.pdf', '-dpdf')

% Jak vykreslit průběh teplot v čase s odchylkami od extrémních hodnot?
errorbar(1:12, prumerne_teploty, prumerne_teploty - min_teploty,...
    max_teploty - prumerne_teploty, 'Marker', 'square' ,...
    'MarkerSize', 12, 'MarkerEdgeColor', [1 0 0],...
    'MarkerFaceColor', [1 0 0], 'LineStyle', '--');
set(gca, 'XTick', 1:12)
set(gca, 'XTickLabel', mesice)
set(gca, 'XTickLabelRotation', 45)

xlabel('Měsíc')
ylabel('Teplota v °C')
title('Průběh teplot')

% Jak exportovat obrázky do PDF?
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'errorplot.pdf', '-dpdf')


% Vzdelani 
% -------- 
% V tabulce jsou uvedeny počty obyvatel v
% Jihomoravském kraji ve věku 15 a více let podle nejvyššího
% ukončeného vzdělání

% nacteme soubor 'obyvatelstvoJM.csv'
T = readtable('obyvatelstvoJM.csv', 'headerlines', 0,...
    'readvariablenames',1, 'Delimiter', ';');
% prevedeme do matice
M = table2array(T);

% Jak vykreslit sloupcový graf absolutních hodnot?
roky = M(:,1);
bar(roky, M(:,2:end))
legend( 'celkem','základní', 'vyučení', 'střední', 'vš', 'bez vzdělání')
xlabel('Roky')
ylabel('Absolutní počty obyvatelstva')
title('Absolutní počty obyvatelstva v Jihomoravském kraji dle vzdělání')
text(roky - 3.4, M(:,2) - 100000, num2str(M(:,2)), 'Rotation', 90,...
    'Color', 'white')
text(roky - 2.6, M(:,3) + 15000, num2str(M(:,3)))
text(roky - 1.3, M(:,4) + 15000, num2str(M(:,4)))
text(roky + 0.1, M(:,5) + 15000, num2str(M(:,5)))
text(roky + 1.4, M(:,6) + 15000, num2str(M(:,6)))
text(roky + 2.9, M(:,7) + 15000, num2str(M(:,7)))
% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'Units', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'barplot.pdf', '-dpdf')

% Jak vykreslit sloupcový graf relativních hodnot?
relativni = M(:,3:end)./(sum(M(:,3:end),2)*ones(1,5));
bar(roky, relativni, 'stacked')
ax(2) = 2016;
axis(ax);
% bar(roky, M(:,3:end)./(M(:,2)*ones(1,5)), 'stacked') % tento nedava v
% souctu jednicku

legend('základní', 'vyučení', 'střední', 'vš', 'bez vzdělání',...
    'Location', 'BestOutside')
xlabel('Roky', 'FontUnits', 'Normalized', 'FontSize', 0.03)
ylabel('Relativní počty obyvatelstva', 'FontUnits', 'Normalized',...
    'FontSize', 0.03)
title('Relativní počty obyvatelstva v Jihomoravském kraji dle vzdělání',...
    'FontUnits', 'Normalized', 'FontSize', 0.03)
procenta = 100*round(relativni(:, 1:end-1),3);
pozice = cumsum(relativni(:, 1:end-1), 2);
text(roky, pozice(:,1)/2, [num2str(procenta(:,1)),['%';'%';'%';'%']],...
    'Color', 'White', 'HorizontalAlignment', 'center',...
    'FontUnits', 'normalized', 'FontSize', 0.05)
text(roky, pozice(:,2) - procenta(:,2)/200, [num2str(procenta(:,2)),...
    ['%';'%';'%';'%']], 'Color', 'White', 'HorizontalAlignment', 'center',...
    'FontUnits', 'normalized', 'FontSize', 0.05)
text(roky, pozice(:,3) - procenta(:,3)/200, [num2str(procenta(:,3)),...
    ['%';'%';'%';'%']], 'Color', 'White', 'HorizontalAlignment', 'center',...
    'FontUnits', 'normalized', 'FontSize', 0.05)
text(roky, pozice(:,4) - procenta(:,4)/200, [num2str(procenta(:,4)),...
    ['%';'%';'%';'%']], 'Color', 'White', 'HorizontalAlignment', 'center',...
    'FontUnits', 'normalized', 'FontSize', 0.05)
% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'Units', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'barplotstacked.pdf', '-dpdf')

% Jak vykreslit koláč s relativními hodnotami?
for k = 1:4
    subplot(2, 2, k)
    set(gca, 'FontUnits', 'normalized')
    pie(M(k,3:end),[0 0 0 1 0])
    title(num2str(M(k,1)))
end
legend({'základní', 'vyučení', 'střední', 'vš', 'bez vzdělání'},...
    'Position',[0.39,0.45,0.25,0.1])

% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'Units', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'pie.pdf', '-dpdf')

% Bonus - 3D kolac - neni ve slajdech
for k = 1:4
    subplot(2, 2, k)
    set(gca, 'FontUnits', 'normalized')
    pie3(M(k,3:end),[0 0 0 1 0])
    title(num2str(M(k,1)))
end
legend({'základní', 'vyučení', 'střední', 'vš', 'bez vzdělání'},...
    'Position',[0.39,0.45,0.25,0.1])
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'Units', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'pie3.pdf', '-dpdf')

% Uvery
% -----
% V tabulce jsou uvedeny hodnoty skóre klientů, kterým poskytujeme
% úvěr. Klienti jsou rozděleni podle jejich předchozí platební
% morálky na špatné (20 klientů) a na dobré (50 klientů).
load skore

% Jak vykreslit histogramy hodnot skóre?
h1 = histogram(spatni, 5, 'Normalization', 'probability');

% Jak přikreslit odhady hustot rozdělení skóre?
hold on
mu = mean(spatni);
sigma = std(spatni);
y = linspace(min(spatni) - 1, max(spatni) + 1);
f = exp(-(y-mu).^2./(2*sigma^2))./(sigma*sqrt(2*pi));
plot(y,f,'LineWidth',1.5)

h2 = histogram(dobri, 8, 'Normalization', 'probability');
mu = mean(dobri);
sigma = std(dobri);
y = linspace(min(dobri) - 1, max(dobri) + 1);
f = exp(-(y-mu).^2./(2*sigma^2))./(sigma*sqrt(2*pi));
plot(y,f,'LineWidth',1.5)
legend([h1, h2], {'špatní klienti', 'dobří klienti'})
xlabel('Skóre', 'FontUnits', 'Normalized', 'FontSize', 0.03)
ylabel('Pravděpodobnost', 'FontUnits', 'Normalized', 'FontSize', 0.03)
title('Rozdělení skóre dobrých a špatných klientů',...
    'FontUnits', 'Normalized', 'FontSize', 0.03)
% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'histogram.pdf', '-dpdf')

% Znacka STOP
% -----------
t = (1/16:1/8:1)'*2*pi;
x = cos(t);
y = sin(t);

fill(x,y,'r', 'EdgeColor', 'black', 'LineWidth', 4)
axis square
axis off

hold on
xx = [x;x(1:2)];
yy = [y;y(1:2)];
plot(fix(xx*30)/30, fix(yy*30)/30, 'Color', 'white', 'LineWidth', 12)
text(0, 0, 'STOP', 'FontUnits', 'Normalized', 'FontSize', 0.3, ...
    'HorizontalAlignment', 'center', 'Color', 'white')

% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
set(h, 'InvertHardcopy', 'off');  % zajisti, aby to nebylo cerne
print(h, 'stop.pdf', '-dpdf')

% Meteo
% ----- 
% V tabulce jsou uvedeny průměrné hodnoty teploty, srážek a ozónu
% naměřené na daném místě v daný čas. Chceme modelovat závislost
% množství ozónu na teplotě a množství srážek.
load meteo

% Jak vykreslit jednotlivé proměnné proti sobě a zjistit rozdělení
% pravděpodobnosti jejích hodnot?

[S,AX,BigAx,H,HAx] = plotmatrix([teploty, srazky, ozon]);
ylabel(AX(1,1),'teploty')
ylabel(AX(2,1),'srážky')
ylabel(AX(3,1),'ozón')
xlabel(AX(3,1),'teploty')
xlabel(AX(3,2),'srážky')
xlabel(AX(3,3),'ozón')

% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'plotmatrix.pdf', '-dpdf')

% Jak vykreslit ozón v závislosti na teplotě a srážkách (pouze naměřená
% data)?
scatter3(teploty, srazky, ozon, 'MarkerFaceColor',[0 .75 .75])

% Jak přikreslit do obrázku plochu danou touto rovnicí?
x = linspace(min(teploty), max(teploty), 20);
y = linspace(min(srazky), max(srazky), 20);
[X, Y] = meshgrid(x, y);
Z = 2*X + 3*Y.^2 + 310;
hold on
%alpha(0.4) mesh(X, Y, Z, 'FaceColor', [1.0, 0.56, 0.0], 'MeshColor',
%'none')%, 'FaceAlpha', 0.4)
mesh(X, Y, Z, 'FaceColor', [1.0, 0.56, 0.0], 'MeshStyle', 'none',...
    'FaceAlpha', 0.4)
xlabel('Teploty')
ylabel('Srážky')
zlabel('Ozón')
title('Průběh množství ozónu')
% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
print(h, 'ozon.pdf', '-dpdf')

% Hodiny 
% ------
figure
t = linspace(0, 2*pi);
x = cos(t);
y = sin(t);
plot(x, y, 'LineWidth', 3, 'Color', 'black')
axis square
axis off
hold on

for k = 1:12
    t = pi/2 - k*2*pi/12;
    x = [0.9 1]*cos(t);
    y = [0.9 1]*sin(t);
    plot(x, y, 'LineWidth', 1, 'Color', 'black')
    text(0.8*cos(t), 0.8*sin(t), num2str(k), 'FontUnits', 'Normalized', 'FontSize', 0.1,...
        'FontWeight', 'bold', 'HorizontalAlignment', 'center');
end

for k = 1:60
    t = pi/2 - k*2*pi/60;
    x = [0.95 1]*cos(t);
    y = [0.95 1]*sin(t);
    plot(x, y, 'LineWidth', 0.5, 'Color', 'black')
end

hod = 16;
min = 14;
t_m = pi/2 - hod*2*pi/12 - min*2*pi/(60*12);
t_v = pi/2 - min*2*pi/60;

x_v = [0 0.9]*cos(t_v);
y_v = [0 0.9]*sin(t_v);
x_m = [0 0.75]*cos(t_m);
y_m = [0 0.75]*sin(t_m);

plot(x_v, y_v, 'LineWidth', 3, 'Color', 'black')
plot(x_m, y_m, 'LineWidth', 5, 'Color', 'black')
plot(0,0, 'ko', 'MarkerSize', 8, 'MarkerFaceColor', 'black')

%pokus
for k = 1:60
    hodiny(12,k);
    pause(1);
    %close;
end
% export
h=gcf;
set(h, 'PaperOrientation', 'landscape')
set(h, 'PaperUnits', 'normalized');
set(h, 'PaperPosition', [0 0 1 1]);
set(h, 'InvertHardcopy', 'off');  % zajisti, aby to nebylo cerne
print(h, 'hodiny.pdf', '-dpdf')
