% Example Polarplot
% Autor: Winfried Kernbichler  

% Figure Defaults
setmyfig(1);set(0,'DefaultAxesFontSize',12);
fig1 = figure(1); clf reset;
set(fig1,'Name','Polarplot');

% Funktionen
ts = 0; te = 2*pi; td = te/500;
t = ts:td:te;
f1 = sin(2*t);
f2 = sin(2*t).*cos(2*t);

% Zwei Polarplots
pol1 = polar(t,f1,'--r');
hold on;
f2 = sin(2*t).*cos(2*t);
pol2 = polar(t,f2,'--b');
hold off

% Position des Achsensystems etwas höher schieben
pos = get(gca,'position');
posn = pos + [0 0.05 0 0];
set(gca,'Position',posn);

% Unsichtbare Achse in der Mitte der Zeichnung (x-Richtung)
% Für Text
xmiddle = pos(1) + pos(3)/2;
axes('Position',[xmiddle-0.01 0.05 0.02 0.05],'Visible','off');

% Beschriftung
th(1) = text(0,0.5,'\bff_1=sin(2t)\rm   ', ...
   'HorizontalAlign','right',...
   'Color','red');
th(2) = text(0.5,0.5,'and', ...
   'HorizontalAlign','center');
th(3) = text(1,0.5,'   \bff_2=sin(2t)cos(2t)\rm', ...
   'HorizontalAlign','left',...
   'Color','blue');
set(th,'FontSize',14,'VerticalAlignment','baseline'); % Anwendung auf alle Texte
disp('PAUSE MODE');pause

% Bar Plots
clf; set(fig1,'Name','Bar');
% Definition einer Funktion
x = -2.9:0.2:2.9;
f1 = exp(-x.*x);
% Bar Plot
bar(x,f1);
title('Bell Shaped Curve');
disp('PAUSE MODE');pause

% Pie Plots
clf; set(fig1,'Name','Pie');
% Definition der Funktion
x = [20 25 33 10];
[c,offset] = max(x); % Maximum von x und Index offset

explode = zeros(size(x));
explode(offset) = 1;

subplot(1,2,1);
h = pie(x,explode); colormap summer
title('Maximum herausgestellt');

subplot(1,2,2);
x1 = x / sum(x); % Normalisiert
pie(x1(1:3));    % Summe nicht 1, daher fehlt ein Stück
title('Fehlender Teil');
disp('PAUSE MODE');pause

% Plot mit Errorbars
clf; set(fig1,'Name','Errorbars');

% Daten
x = 1:0.5:10;
y = 10*exp(-x) + 3;
yerr = 2./x;

ax1 = subplot(2,1,1);
errorbar(x,y,yerr/2); xlabel('x'), ylabel('y');
% Nur ein Fehlerargument - oben und unten gleich

ax2 = subplot(2,1,2);
errorbar(x,y,yerr/3,2*yerr/3); xlabel('x'), ylabel('y');
% Zwei Fehlerargumente - unten, oben

ylim1 = get(ax1,'YLim');  % Get Y-Limits
ylim2 = get(ax2,'YLim');

ylims(1) = min(ylim1(1),ylim2(1));  % Minimum der unteren Limits
ylims(2) = max(ylim1(2),ylim2(2));  % Maximum der oberen Limits
set([ax1,ax2],'YLim',ylims);        % Stellt sicher,daß Limits in beiden Achsen gleich sind
disp('PAUSE MODE');pause

% Plot mit verschiedenen Achsen
clf; set(fig1,'Name','Zwei Achsen');

% Daten für erste Kurve (rot)
x1 = 0:0.01:40;a = 0.0006;
x1 = pi*x1;
y1 = -1 + sin(x1).*exp(-a*x1.^2);

% Erste Zeichnung
hl1 = line(x1,y1,'Color','r');
ax1 = gca;
set(ax1,'Position',[0.13 0.11 0.74 0.78]);
set(ax1,'XColor','r','YColor','r')
set(ax1,'Xlim',[0 max(x1)]);
xlabel('x_1'); ylabel('y_1')

% Daten für Zweite Kurve
x2 = 0:0.01:10;b = 0.04; 
x2 = pi*x2;
y2 = 1-cos(x2).*exp(-b*x2.^2);

% Zweite Zeichnung
ax2 = axes('Position',get(ax1,'Position'),...
           'XAxisLocation','top',...
           'YAxisLocation','right',...
           'Color','none',...
           'XColor','k','YColor','k');
set(ax2,'Xlim',[0 max(x2)]);
hl2 = line(x2,y2,'Color','k','Parent',ax2);
xlabel('x_2'); ylabel('y_2')
disp('PAUSE MODE');pause

% Plot mit Datenbeschriftung
clf; set(fig1,'Name','Beschriftung');

% Daten
t = 0:900; y = 0.25*exp(-0.005*t);

% Zwei Achsen
h1 = axes('Position',[0 0 1 1],'Visible','off'); % Unsichtbar für Text
h2 = axes('Position',[.25 .1 .7 .8]);            % Sichtbar für Daten

p1 = plot(t,y);
xlabel('Time \mu{}sec');
ylabel('Amplitude');

% Beschriftung von Daten
ind = 301;
tv = t(ind); yv = y(ind);
th = text(tv,yv, ...
   ['\bullet\leftarrow\fontname{times}Value at t = ',num2str(tv)], ...
   'Parent',h2);
set(th,'VerticalAlignment','middle','HorizontalAlignment','left');
set(th,'FontSize',18);

% Beschriftung außerhalb
str(1) = {'Plot of the function:'};
str(2) = {' y = A{\ite}^{-\alpha{\itt}}'};
str(3) = {'With the values:'};
str(3) = {' A = 0.25'};
str(4) = {' \alpha = .005'};
str(5) = {' t = 0:900'};
set(gcf,'CurrentAxes',h1); % Macht h1 zur aktuellen Achse
text(.01,.6,str,'FontSize',12,'VerticalAlignment','middle');

% Finde alle Textobjekte und verwende die Farbe Rot.
texth = findobj(gcf,'Type','text'); % Findet innerhal der Current Figure
set(texth,'Color','red');

disp('PAUSE MODE');pause
close(fig1); setmyfig(0);