<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\documentstyle[bar,german]{article}

\newdimen\mydim\mydim\textwidth\advance\mydim -6pt\divide\mydim 2
\def\back{$\backslash$}
\def\mycs#1{{\tt\back #1}}
\def\myhelp#1{\back#1\{barenv\}}
\def\mybar#1#2{\back bar\{#1\}\{#2\}}


\begin{document}
\centerline{\LARGE Balkendiagramme in \LaTeX-Dokumenten}
\vspace{3ex}
\centerline{\large\sc Joachim Bleser\hfil Edmund Lang}
\vspace{2ex}
\centerline{\large TH Darmstadt, Hochschulrechenzentrum}
\vspace{2ex}

Als Hilfsmittel, um Daten zu veranschaulichen, werden heutzutage immer
h�ufiger Diagramme, insbesondere Balken- oder Kuchendiagramme, eingesetzt.
Jeder kennt die Balkendiagramme, die z.B.\ nach Wahlen Gewinne und Verluste
der einzelnen Parteien auf einen Blick verdeutlichen.

Das hier vorgestellte Style-File {\tt bar.sty} hilft dem \LaTeX-Anwender,
solche {\em Balkendiagramme} in seinen Dokumenten zu verwenden, ohne auf externe
Programme, wie z.B.\ {\sc Havard Graphics} oder {\sc Excel} im PC-Bereich,
zur�ckgreifen zu m�ssen.

\begin{center}
\parbox{6cm}{\tt%
  \back begin\{barenv\}\\ \hspace*{5mm}{\em Deklarationen}\\
  \hspace*{5mm}\back bar\{{\em H�he}\}\{{\em F�llungsindex}\}[{\em Wert}]\\
  \hspace*{1cm}\vdots\\
  \hspace*{5mm}\back bar\{{\em H�he}\}\{{\em F�llungsindex}\}[{\em Wert}]\\
  \back end\{barenv\}\\
  {\em Legende}}
\end{center}

Innerhalb der neu definierten Umgebung {\tt barenv} k�nnen beliebig
positive und negative Balken gezeichnet werden. Acht verschiedene Schraffuren
stehen zur Verf�gung.

\begin{tabular}{lcccccccc}
Schraffur: &amp;\legend1{}&amp;\legend2{}&amp;\legend3{}&amp;\legend4{}&amp;%
\legend5{}&amp;\legend6{}&amp;\legend7{}&amp;\legend8{}\\
Index: &amp; 1 &amp; 2 &amp; 3 &amp; 4 &amp; 5 &amp; 6 &amp; 7 &amp; 8
\end{tabular}

Die {\em Deklarationen} definieren Einstellungen wie z.B.\ Balkenbreite oder
die Einteilung	der Achsen.

Der einfachste Fall ist ein zweidimensionales Balkendiagramm. Die Balken werden
durch ihre H�he und ihren F�llungsindex definiert. Optional ist noch eine
beliebige Zeichenfolge m�glich, die unter den Balken geschrieben wird.

\vspace{\baselineskip}
\noindent\parbox{\mydim}{
\begin{barenv}
  \setwidth{30}
  \setyaxis{0}{50}{10}
  \bar{10}{1}
  \bar{45}{2}[\tt\small max]
  \bar{30}{3}
  \bar{25}{4}
\end{barenv}
}\hfill
\parbox{\mydim}{\tt
\back begin\{barenv\}\\
% \back setxaxis\{1\}\{4\}\{1\}\\
  \back setyaxis\{0\}\{50\}\{10\}\\
  \back bar\{10\}\{1\}\\
  \back bar\{45\}\{2\}[\back tt max]\\
  \back bar\{30\}\{3\}\\
  \back bar\{25\}\{4\}\\
\back end\{barenv\}\\
}

Die x-Achse kann auch anstelle von Zahlen mit den Monatsnamen (d.h.\ mit den
ersten drei Buchstaben der Monatsnamen) oder Tagen (d.h.\ mit den ersten
drei Buchstaben der Tage) beschriftet werden.

\centerline{\bf Temperatur / Monat}
\begin{center}
\begin{barenv}
  \setwidth{30}
  \setstyle{\sc}
  \setxvaluetyp{month}
  \setxaxis{1}{11}{2}
  \setstyle{\tt}
  \setyaxis{0}{40}{10}
  \bar{0}{1}
  \bar{8}{1}
  \bar{15}{1}
  \bar{25}{1}
  \bar{20}{1}
  \bar{5}{1}
\end{barenv}
\end{center}

\vspace{\baselineskip}
Zwischen die Balken kann zus�tzlicher Zwischenraum eingef�gt oder
auch eine Trennlinie gezogen werden.
Ein Diagramm kann sehr leicht an der x-Achse gespiegelt werden, indem
der Anfangs- und der Endwert der y-Achse vertauscht werden. In diesem Fall
mu� aber auch die Schrittweite negiert werden.

\vspace{1ex}
\noindent\parbox{\mydim}{
{\bf Gnu-Aktienindex}

\vspace{\baselineskip}
 \begin{barenv}
  \setwidth{30}
  \setstyle{\tt}
  \setyaxis[10]{-20}{40}{10}
  \setstyle{\sc}
  \setxvaluetyp{day}
  \setxaxis{5}{8}{1}
  \bar{36.5}{8}
  \bar{6.2}{8}
  \vline
  \bar{-3.2}{8}
  \bar{-16}{8}
 \end{barenv}
}
\parbox{\mydim}{
{\bf Gnu-Aktienindex}

\vspace{\baselineskip}
 \begin{barenv}
  \setwidth{30}
  \setstyle{\tt}
  \setyaxis[10]{40}{-20}{-10}
  \setstyle{\sc}
  \setxvaluetyp{day}
  \setxaxis{5}{8}{1}
  \bar{36.5}{8}
  \bar{6.2}{8}
  \vline
  \bar{-3.2}{8}
  \bar{-16}{8}
 \end{barenv}
}

\vspace{\baselineskip}
Wenn der zweidimensionale Fall nicht ausreicht, k�nnen die Balken auch
dreidimensional darstellen werden. Der Befehl \mycs{setdepth} setzt die
Balkentiefe auf einen Wert gr��er 0; dadurch erhalten die Balken Plastizit�t.

\noindent\parbox{\mydim}{
 \begin{barenv}
  \setdepth{10}\setwidth{30}
  \setxaxis{1}{4}{1}
  \setyaxis[10]{-20}{60}{20}
  \bar{10,2}{1}
  \bar{45,6}{2}
  \bar{30}{3}
  \bar{-12,7}{4}
 \end{barenv}
}\hfill
\parbox{\mydim}%
{\tt\myhelp{begin}\\
  \back setdepth\{10\}\back setwidth\{30\}\\
  \back setxaxis\{1\}\{4\}\{1\}\\
  \back setyaxis[10]\{0\}\{60\}\{20\}\\
  \mybar{10,2}{1}\\
  \mybar{45,6}{2}\\
  \mybar{30}{3}\\
  \mybar{-12,7}{4}\\
 \myhelp{end}
}


\vspace{\baselineskip}
Die Beschriftung der Balken kann an verschiedenen Stellen erfolgen.
Voreingestellt ist {\em oberhalb}, wenn die Gr��e $&gt;$ 0 ist, und unterhalb,
wenn die Gr��e $&lt;$ 0 ist. F�nf weitere M�glichkeiten sind zugelassen, so z.B.
{\em innerhalb} der Balken oder stets {\em unterhalb}.

\noindent\parbox{\mydim}{
 \vspace*{\baselineskip}
 \begin{barenv}
  \setdepth{10}\setwidth{30}
  \setnumberpos{inside}
  \setxaxis{1}{4}{1}
  \setyaxis[10]{-20}{60}{20}
  \bar{10,2}{1}
  \bar{45,6}{1}
  \bar{30}{1}
  \bar{-12,7}{1}
 \end{barenv}
}\hfill
\parbox{\mydim}%
{\tt\myhelp{begin}\\
  \back setdepth\{10\}\back setwidth\{30\}\\
  \back setnumberpos\{inside\}\\
  \back setxaxis\{1\}\{4\}\{1\}\\
  \back setyaxis[10]\{0\}\{60\}\{20\}\\
  \mybar{10,2}{1}\\
  \mybar{45,6}{1}\\
  \mybar{30}{1}\\
  \mybar{-12,7}{1}\\
 \myhelp{end}
}

\vspace{\baselineskip}
Sind die Werte der Balken klein, treten Differenzen zwischen den
H�hen nicht besonders deutlich hervor. In  solchen F�llen kann das Diagramm
vertikal mit dem Befehl \mycs{setstretch} skaliert werden.
Der umgekehrte Fall, wenn das Diagramm zu gro� wird, kann
ebenfalls mit \mycs{setstretch} und einem Wert $&lt;1$ abgefangen werden.
Die Skalierung betrifft nur die Balkenh�hen, nicht aber Breite und Tiefe.

\noindent\parbox{\mydim}{%
 \begin{barenv}
  \setstretch{50}
  \setdepth{10}\setwidth{30}
  \setnumberpos{up}
  \setxaxis{1}{4}{1}
  \setprecision{2}
  \setyaxis{0}{2}{0.5}
  \bar{0,2}{1}
  \bar{1,6}{2}
  \bar{0,05}{3}
  \bar{0,13}{4}
 \end{barenv}
}\hfill
\parbox{\mydim}%
{\tt\myhelp{begin}\\
  \back setstretch\{50\}\\
  \back setdepth\{10\}\back setwidth\{30\}\\
  \back setnumberpos\{up\}\\
  \back setxaxis\{1986\}\{1989\}\{1\}\\
  \back setprecision\{2\}\\
  \back setyaxis\{0\}\{2\}\{0.5\}\\
  \back bar\{0,2\}\{1\}\\
  \back bar\{1,6\}\{2\}\\
  \back bar\{0,05\}\{3\}\\
  \back bar\{0,13\}\{4\}\\
 \myhelp{end}
}

Der im obigen Beispiel verwendete Befehl \mycs{setprecision} bestimmt die
Anzahl der Nachkommastellen f�r die Beschriftungen der Achsen. Im Beispiel
wurde, da der Befehl {\em nach} dem \mycs{setxaxis}-Befehl erfolgt, f�r
die y-Achse zwei Nachkommastellen gew�hlt.


Das Diagramm kann mit horizontalen Hintergrundlinien versehen werden.
Dies erleichtert das Ablesen der Werte der einzelnen Balken.
Es kann zwischen gepunkteten oder durchgezogenen Hintergrundlinien
gew�hlt werden. Voreingestellt sind gepunktete Hintergrundlinien.

\noindent\parbox{\mydim}{
 \begin{barenv}
  \setstretch{0.05}
  \setdepth{10}\setwidth{30}
  \setnumberpos{down}
  \setyaxis{0}{2500}{500}
  \hlineon
  \bar{1400}{4}
  \bar{2340}{5}
  \bar{890}{6}
  \bar{1973}{7}
 \end{barenv}
}\hfill
\parbox{\mydim}%
{\tt\myhelp{begin}\\
  \back setstretch\{0.05\}\\
  \back setdepth\{10\}\back setwidth\{30\}\\
  \back setnumberpos\{down\}\\
  \back setyaxis\{0\}\{2500\}\{500\}\\
  \back hlineon\\
  \mybar{1400}{4}\\
  \mybar{2340}{5}\\
  \mybar{890}{6}\\
  \mybar{1973}{7}\\
 \myhelp{end}
}

\vspace{\baselineskip}
Zus�tzliche Erkl�rungen k�nnen mit dem	\LaTeX-eigenen
{\tt\back put} Befehl hinzugef�gt werden.
Da das Balkendiagramm in eine {\tt picture}-Umgebung gezeichnet wird, sind
grunds�tzlich alle Befehle erlaubt, die in einer {\tt picture}-Umgebung
Verwendung finden (z.B.\ {\tt\back line,\back oval} usw.).


\end{document}
</pre></body></html>