Diagramme mit LaTeX: Unterschied zwischen den Versionen
(Neu erstellt: Diagramme mit pgfplots) |
K (Auf Vorschlag die Breite ein wenig reduziert.) |
||
Zeile 126: | Zeile 126: | ||
{| class="prettytable" | {| class="prettytable" | ||
! Codebeispiel | ! Codebeispiel | ||
− | |||
|---- | |---- | ||
| style="background-color: #fff;" | | | style="background-color: #fff;" | | ||
Zeile 155: | Zeile 154: | ||
\end{document} | \end{document} | ||
</source> | </source> | ||
+ | |---- | ||
+ | ! Ausgabe des Dokumentes | ||
+ | |---- | ||
| style="background-color: #fff;" valign="top"| | | style="background-color: #fff;" valign="top"| | ||
Version vom 13. Januar 2010, 17:28 Uhr
Um Diagramme mit LaTeX zu erzeugen gibt es verschiedene Möglichkeiten. Ich stelle hier das Paket pgfplots vor. Es basiert auf TikZ und ermöglicht somit die direkte Ausgabe als PDF.
Inhaltsverzeichnis
Daten
Die Daten für pgfplots müssen als Textdatei vorliegen. Dabei ist zu beachten:
- Zeilen, die mit # oder % beginnen, werden ignoriert
- Die erste Zeile, die kein # oder % enthält, sollte Überschriften enthalten
- Die Überschriften sollten nur aus einem Wort bestehen
- und keine Umlaute oder Sonderzeichen enthalten
- Die Spalten sollten durch Tabulatorzeichen getrennt sein
- Ausser der ersten sollte keine Zeile Text enthalten, sondern nur Zahlen
- Dezimaltrennzeichen sollte ein Punkt sein statt eines Kommas
Erzeugen kann man solche Datendateien mit Excel oder OpenOffice Calc. Man muss da ein wenig mit den Exporteinstellung herumprobieren, aber wenn man es raus hat, geht es sehr gut. Wichtig ist, dass Text nicht mit Anführungszeichen umschlossen wird und der Punkt als Dezimaltrenner. Alles andere kann man auch pgfplots beibringen.
Beispiel 1
Zunächst eine kleine Datendatei (data1.csv):
Messung Menge
1 15
2 14
3 16
4 14
5 13
6 13
7 14
8 15
9 16
10 15
Codebeispiel | Ausgabe des Dokumentes |
---|---|
\documentclass[paper=a4,12pt,version=last,landscape]{scrartcl}
\usepackage{pgfplots}
\begin{document}
\centering
\begin{tikzpicture}
\begin{axis}[ymin=0]
\addplot table {data1.csv};
\end{axis}
\end{tikzpicture}
\end{document}
|
Dieses sehr einfache Beispiel zeigt die grundlegende Verwendung von pgfplots.
Jedes Diagramm wird in einer tikzpicture
Umgebung erzeugt.
Als nächstes wird mit der axis
Umgebung ein Koordinatensystem erzeugt. Die axis
Umgebung kann man mit Hilfe von optionalen Parametern formatieren. In diesem Beispiel wird mit [ymin=0]
die y-Achse so formatiert, dass sie bei Null beginnt. In der Standarteinstellung werden beide Achsen so formatiert, dass die gezeichneten Daten gleichmäßig verteilt sind.
Schließlich werden mit \addplot table {data1.csv};
die Daten aus der Datei gelesen und dargestellt.
Beispiel 2
Nun eine etwas umfangreichere Datendatei (data2.csv):
Jahr Januar Februar März April Mai Juni Juli August September Oktober November Dezember Summe
1946 40.8 121.0 16.2 29.8 78.2 136.7 49.8 66.8 32.0 59.1 35.6 19.9 685.9
1947 33.1 47.3 102.0 40.0 53.7 38.7 56.9 16.9 39.2 24.9 105.0 153.0 710.7
1948 130.0 38.4 19.0 38.7 43.9 106.4 77.5 99.7 25.6 34.8 39.2 30.8 684.0
1949 37.0 16.0 29.0 56.0 92.0 21.3 8.0 55.6 25.5 44.0 45.6 55.4 485.4
1950 26.7 96.9 9.3 83.1 80.7 84.9 120.5 149.3 79.5 23.5 129.7 47.3 931.4
1951 76.0 50.7 60.1 49.1 57.3 168.2 41.9 80.4 47.2 45.2 109.5 45.9 831.5
1952 55.4 63.9 135.0 35.6 21.6 73.1 6.1 61.3 89.0 109.0 143.0 85.6 878.6
1953 26.4 52.3 5.0 33.6 58.2 112.1 130.1 25.4 33.3 25.2 8.2 21.2 531.0
1954 52.4 35.0 21.0 66.7 63.7 53.0 67.7 108.0 108.1 49.8 39.9 61.9 727.2
1955 122.0 56.0 25.4 27.8 87.0 100.7 87.8 45.3 42.6 31.3 10.3 108.8 745.0
1956 55.8 16.9 25.2 89.7 64.7 45.8 92.5 79.3 38.0 103.0 44.9 20.8 676.6
1957 34.0 101.1 40.9 32.0 45.1 174.5 76.2 117.4 115.8 14.3 19.4 49.8 820.5
1958 79.0 148.4 31.7 34.6 86.3 73.3 69.2 110.9 45.9 53.0 45.4 95.6 873.3
1959 65.0 0.5 33.5 69.6 11.9 46.1 34.1 61.2 13.8 52.9 22.9 44.6 456.1
1960 53.2 64.3 25.5 23.0 79.3 45.2 99.2 106.8 18.9 89.9 88.5 70.6 764.4
1961 86.6 53.0 13.3 89.8 103.0 86.8 91.5 81.7 18.2 43.4 50.5 78.0 795.8
1962 69.0 64.0 71.0 43.0 68.0 28.9 48.5 42.6 51.5 12.6 25.7 53.9 578.7
1963 16.4 32.5 67.0 33.2 26.8 85.0 14.8 124.0 20.7 47.8 106.0 2.1 576.3
1964 12.2 40.4 89.5 37.6 34.4 37.8 3.9 57.7 61.2 45.8 62.3 23.7 506.5
1965 107.0 26.5 82.5 80.6 98.3 126.2 114.9 44.1 77.5 7.8 129.0 128.0 1022.4
1966 45.0 48.0 50.0 56.0 49.0 119.6 58.4 123.0 35.7 54.8 50.1 116.2 805.8
1967 32.5 34.8 64.1 27.8 76.8 55.0 60.3 60.7 99.7 75.0 59.3 72.6 718.6
1968 80.5 69.7 44.2 136.0 71.7 106.9 105.2 191.3 84.7 43.1 25.0 42.2 1000.5
1969 41.0 84.7 71.8 87.3 91.9 109.7 50.7 106.2 21.4 4.1 89.5 31.7 790.0
1970 63.9 144.8 46.7 89.2 160.0 62.1 73.0 40.5 54.4 39.6 44.4 36.6 855.2
1971 33.0 17.0 29.7 19.5 68.0 90.5 11.3 49.2 21.4 23.2 86.9 12.4 462.1
1972 25.4 7.9 35.5 70.0 96.5 92.2 47.6 80.2 31.1 28.8 125.8 19.2 660.2
1973 19.9 54.2 17.3 62.0 93.8 94.9 101.5 71.3 23.1 73.7 93.6 50.6 755.9
1974 40.5 61.5 66.3 20.5 50.3 63.6 98.4 42.8 33.2 141.0 64.6 78.7 761.4
1975 56.0 26.6 53.4 40.0 53.8 160.1 115.5 98.0 96.2 23.9 69.8 27.0 820.3
1976 71.8 21.7 26.1 61.2 38.5 17.9 87.7 32.3 123.1 48.0 56.9 63.1 648.3
1977 79.9 111.7 30.4 38.1 25.0 105.2 33.1 56.3 42.0 29.3 97.0 51.9 699.9
1978 45.2 44.5 64.2 31.8 256.8 100.4 124.1 55.2 51.6 42.1 21.5 125.1 962.5
1979 38.6 78.9 90.0 69.7 48.4 38.8 31.7 78.4 25.2 33.8 80.0 82.2 695.7
1980 63.7 44.8 34.3 50.6 63.0 118.0 161.0 63.8 32.8 92.6 39.8 68.6 833.0
1981 74.3 42.3 59.9 71.2 68.8 115.7 64.6 39.1 52.0 220.0 60.9 145.7 1014.5
1982 84.1 10.8 61.8 27.5 58.9 135.7 109.5 63.3 35.4 135.0 46.8 143.6 912.4
1983 50.4 48.7 49.3 141.0 164.7 31.9 18.5 21.3 56.8 44.2 45.3 39.8 711.9
1984 121.1 75.6 18.4 47.5 131.3 78.8 72.2 23.4 119.7 45.0 59.2 37.2 829.4
1985 58.9 48.3 45.6 48.7 98.1 95.2 74.5 29.6 39.0 11.3 93.4 53.2 695.8
1986 98.4 12.7 66.9 89.9 83.3 56.4 60.8 133.6 97.2 89.8 42.2 71.8 903.0
1987 41.9 48.2 65.6 24.0 123.0 131.1 101.1 58.7 41.5 81.5 62.8 30.8 810.2
1988 91.1 108.2 148.0 33.0 60.2 55.7 81.5 53.4 84.7 80.7 39.5 99.2 935.2
1989 20.4 57.1 34.8 123.2 26.0 47.4 58.0 36.5 15.2 41.7 41.7 130.3 632.3
1990 32.6 106.1 24.3 35.6 7.1 109.8 26.6 38.8 64.5 66.1 93.5 92.4 697.4
1991 59.7 22.8 27.0 23.0 17.0 55.0 66.0 10.0 71.0 33.0 86.0 55.0 525.5
1992 42.2 42.2 103.9 43.0 57.4 123.0 61.6 63.7 33.3 115.0 118.8 31.3 835.4
1993 77.4 17.2 22.0 41.0 89.0 82.0 91.0 33.0 91.0 106.6 30.0 166.7 846.9
1994 62.9 49.5 71.0 91.0 83.5 91.6 32.9 68.1 106.2 33.0 37.5 79.0 806.2
1995 124.1 52.7 84.8 64.1 102.0 65.3 85.9 57.6 99.5 36.1 81.9 56.8 910.8
1996 3.5 60.8 22.3 30.3 118.3 85.3 69.5 51.1 17.2 67.4 115.0 50.2 690.9
1997 20.3 133.5 40.2 25.6 57.5 141.7 103.3 51.5 11.6 64.1 65.5 73.6 788.4
1998 61.6 21.6 34.1 94.2 29.0 71.9 51.4 22.9 74.0 132.5 58.9 24.6 676.7
1999 59.6 55.7 88.0 48.5 73.6 74.9 70.0 37.0 70.0 48.7 49.9 165.7 841.6
2000 27.0 77.2 61.7 48.9 89.3 37.5 112.0 52.0 87.8 43.2 72.7 46.5 755.8
2001 70.5 60.0 134.4 81.4 37.4 80.3 47.7 31.5 97.2 52.3 82.3 98.1 873.1
2002 27.7 128.8 59.0 34.6 142.2 53.7 156.0 47.8 82.5 90.0 100.7 58.6 981.6
2003 101.8 12.8 24.1 27.6 67.5 61.4 64.4 24.1 23.6 93.1 42.8 23.1 566.3
2004 101.3 29.5 22.9 23.6 55.8 50.1 61.1 106.9 38.8 98.1 38.9 34.0 661.0
2005 33.1 51.8 35.1 76.2 65.7 21.8 88.3 73.4 31.1 34.5 29.5 62.6 603.1
2006 25.4 44.2 85.4 33.6 64.2 65.2 131.7 156.7 26.8 136.0 35.6 45.8 850.6
Codebeispiel |
---|
\documentclass[paper=a4,12pt,version=last,landscape]{scrartcl}
\usepackage{pgfplots}
\begin{document}
\centering
\begin{tikzpicture}
\begin{axis}[width=0.9\textwidth,height=0.9\textheight,
title={Niederschlag in den letzten 60 Jahren},
xtick={1946,1950,1955,1960,1965,1970,1975,1980,1985,1990,1995,2000,2005},
x tick label style={/pgf/number format/1000 sep=},
xlabel={Jahr},
y tick label style={/pgf/number format/1000 sep=},
extra y ticks={456.1, 1022.4},
extra y tick labels={{456,1},{1022,4}},
extra y tick style={grid=major,
tick label style={xshift=-1cm}},
ylabel={mm},
enlarge x limits=0.01]
\addplot table[x=Jahr, y=Summe] {data2.csv};
\end{axis}
\end{tikzpicture}
\end{document}
|
Ausgabe des Dokumentes |
In diesem umfangreicheren Beispiel werden eine Parameter der axis
Umgebung verändert:
width=0.9\textwidth,height=0.9\textheight
- Hier wird die Breite und die Höhe des Koordinatensystems angegeben.
- Es wird jede LaTeX-Einheit akzeptiert.
title={Niederschlag in den letzten 60 Jahren}
- Der Titel des Diagramms wird angegeben. Hier ist praktisch jeder beliebige LaTeX-Code erlaubt.
- Dieser Titel darf nicht mit einer eventuell nötigen Bildunterschrift verwechselt werden, die ins Abbildungsverzeichnis aufgenommen werden soll.
xtick={1946,1950,1955,1960,1965,1970,1975,1980,1985,1990,1995,2000,2005}
- Damit nicht jede Jahreszahl dargestellt wird, wird hier eine Liste übergeben, die festlegt, welche x-Werte an die Achse geschrieben werden.
x tick label style={/pgf/number format/1000 sep=}
- Normalerweise setzt pgfplots als Tausendertrennzeichen ein Komma wie im englischen Sprachraum üblich. Damit dies bei den Jahreszahlen nicht passiert, wird hier der Style verändert.
xlabel={Jahr}
- Das Label an der x-Achse. Hier kann beliebiger LaTeX-Code stehen.
y tick label style={/pgf/number format/1000 sep=}
- Auch an der y-Achse werden die Tausendertrennzeichen entfernt.
extra y ticks={456.1, 1022.4}
- Um das Minimum und das Maximum zu markieren, werden hier zusätzliche Punkte festgelegt, die an die y-Achse geschrieben werden sollen. Das gleiche ist auch für die x-Achse möglich.
extra y tick labels={{456,1},{1022,4}}
- Weil hier Zahlen mit Kommastelle angezeigt werden sollen, werden die Labels der zusätzlichen Punkte explizit angegeben. Hier kann beliebiger LaTeX-Code stehen.
- Solche Labels können auch für die normalen ticks der x- und y-Achsen angegeben werden.
extra y tick style={grid=major, tick label style={xshift=-1cm}}
- Hier wird das Aussehen der zusätzlichen Punkte festgelegt.
- Es wird eine Linie eingefügt, die wie das Hauptgitternetz aussieht und das Label wird um 1cm nach links verschoben, damit es nicht mit den normalen Labels überlappt.
ylabel={mm}
- Das Label an der y-Achse. Hier kann beliebiger LaTeX-Code stehen.
enlarge x limits=0.01
- Dies bewirkt, dass der Abstand zwischen dem ersten x-Wert und dem linken Rand, sowie dem letzten x-Wert und dem rechten Rand, verkleinert wird. Werte größer als 1 vergrößern den Rand.
Die Daten werden mit \addplot table[x=Jahr, y=Summe] {data2.csv};
aus der Datei gelesen und dargestellt. Im optionalen Parameter von table
wird festgelegt, welche Spalte auf welche Achse gezeichnet wird. Hier kann man entweder die Spaltenüberschrift verwenden, oder auch [x index=0, y index=13]
.
Weitere Möglichkeiten
pgfplots bietet noch viele weitere Einstellungsmöglichkeiten.
- Es können nicht nur lineare sondern auch logrithmische Plots erstellt werden.
- Neben Liniendiagrammen gibt es noch weitere Darstellungsformen wie Balken- oder Flächendiagramme.
- Man kann eine Legende hinzufügen.
- Man kann einzelne Punkte markieren und mit Text beschreiben.
- Das Ausehen der Linien und der Punkte kann verändert werden.
- Es können auch Funktionsgraphen erstellt werden.