summaryrefslogtreecommitdiff
path: root/macros/latex209/contrib/barkom/barkom.tex
blob: a3a5cf7d178cb4ee266556e94f253c9924bafb9e (plain)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
\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
hufiger 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,
zurckgreifen zu mssen.

\begin{center}
\parbox{6cm}{\tt%
  \back begin\{barenv\}\\ \hspace*{5mm}{\em Deklarationen}\\
  \hspace*{5mm}\back bar\{{\em Hhe}\}\{{\em Fllungsindex}\}[{\em Wert}]\\
  \hspace*{1cm}\vdots\\
  \hspace*{5mm}\back bar\{{\em Hhe}\}\{{\em Fllungsindex}\}[{\em Wert}]\\
  \back end\{barenv\}\\
  {\em Legende}}
\end{center}

Innerhalb der neu definierten Umgebung {\tt barenv} knnen beliebig
positive und negative Balken gezeichnet werden. Acht verschiedene Schraffuren
stehen zur Verfgung.

\begin{tabular}{lcccccccc}
Schraffur: &\legend1{}&\legend2{}&\legend3{}&\legend4{}&%
\legend5{}&\legend6{}&\legend7{}&\legend8{}\\
Index: & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 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 Hhe und ihren Fllungsindex definiert. Optional ist noch eine
beliebige Zeichenfolge mglich, 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 zustzlicher Zwischenraum eingefgt 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, knnen die Balken auch
dreidimensional darstellen werden. Der Befehl \mycs{setdepth} setzt die
Balkentiefe auf einen Wert grer 0; dadurch erhalten die Balken Plastizitt.

\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 Gre $>$ 0 ist, und unterhalb,
wenn die Gre $<$ 0 ist. Fnf weitere Mglichkeiten 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
Hhen nicht besonders deutlich hervor. In  solchen Fllen 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 $<1$ abgefangen werden.
Die Skalierung betrifft nur die Balkenhhen, 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 fr die Beschriftungen der Achsen. Im Beispiel
wurde, da der Befehl {\em nach} dem \mycs{setxaxis}-Befehl erfolgt, fr
die y-Achse zwei Nachkommastellen gewhlt.


Das Diagramm kann mit horizontalen Hintergrundlinien versehen werden.
Dies erleichtert das Ablesen der Werte der einzelnen Balken.
Es kann zwischen gepunkteten oder durchgezogenen Hintergrundlinien
gewhlt 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}
Zustzliche Erklrungen knnen mit dem	\LaTeX-eigenen
{\tt\back put} Befehl hinzugefgt werden.
Da das Balkendiagramm in eine {\tt picture}-Umgebung gezeichnet wird, sind
grundstzlich alle Befehle erlaubt, die in einer {\tt picture}-Umgebung
Verwendung finden (z.B.\ {\tt\back line,\back oval} usw.).


\end{document}