File:Einwohnerentwicklung Von Bonn.svg
Gnuplot script to generate this plot
#!/usr/bin/gnuplot
# gnuplot
# Variablen - die wichtigsten Paramter dieser Grafik:
# (in der Regel wird es reichen für eine neue Grafik diese Werte zu ändern)
my_data = 'Einwohnerentwicklung_von_Bonn.dat'
my_xrange_min = '01.01.1620'
my_xrange_max = '31.12.2017'
my_xtics_years = '50'
my_mxtics = '5'
my_yrange_min = '0'
my_yrange_max = '*' # Nur hier ist '*' erlaubt und sinnvoll
my_ytics = '50000'
my_ymtics = '5'
# Allgemeines zu den Eingabedaten
set timefmt "%d.%m.%Y" # Zeitangaben in TT.MM.YYYY
set datafile separator ";" # Spaltenseparator
set datafile commentschars "#" # Kommentarzeichen
stats my_data u (strptime("%d.%m.%Y",strcol(1))) nooutput
my_diff = (STATS_max - STATS_min) / (60*60*24*365.25)
print ' -----Stats-(Timestamp)----------------------'
print ' Erster Wert der Datendatei: ', strftime("%d.%m.%Y", STATS_min)
print ' Letzter Wert der Datendatei: ', strftime("%d.%m.%Y", STATS_max)
print ' Diff in Jahren: ', my_diff
print ' --------------------------------------------'
# Anmerk.: die ausgegebenen Timestamps können in einer Shell bequem mit
# 'date -d @[Wert]' in humanleseriches Format gewandelt werden
# Allgemeines zur Ausgabe
set key vertical maxrows 6 # Max Anzahl Zeilen
set key left top # Legende links oben
set key opaque # ohne Transparenz
set key samplen 2 # Breite der Linenbeispiele
unset key # direkt vorher gesetzte Werte aufgehoben; ggf auskommentieren!
set style data lines # wird bei 'plot' überschrieben
set style fill transparent solid 0.4 # wird ebenfalls bei 'plot' überschrieben
set border 3 # Rahmen unten (Bit 1) und links (+ Bit 2)
set grid # Gitterlinien verwenden
# Gitterlinienen per Hand setzen falls gewünscht
set style line 1 linetype rgb '#696969' linewidth 0.5 dashtype 2 # Def. Major-grid
set style line 2 linetype rgb '#C9C9C9' linewidth 0.5 dashtype 3 # def. Minor-grid
set grid xtics mxtics # eventuell noxtics und nomxtics
set grid ytics mytics # eventuell noytics und nomytics
set grid back # Gitter im Hintergrund
set grid linestyle 1, linestyle 2 # Setzen des linestyle für Major u. Minor
#show grid # Kontrollausgabe auf der Konsole
# Farben - nummerische Equavalente zu Namen nach:
# https://www2.uni-hamburg.de/Wiss/FB/15/Sustainability/schneider/gnuplot/colors.htm
# Die beiden Ziffen am Ende der Variablen geben opacity/transparenz an
#
my_darkred_00 = '#008B0000'; my_darkred_20 = '#208B0000';
my_darkred_40 = '#408B0000'; my_darkred_60 = '#608B0000';
my_darkred_80 = '#808B0000'; my_darkred_a0 = '#a08B0000';
my_darkred_c0 = '#c08B0000'; my_darkred_e0 = '#e08B0000';
#
my_darkgreen_00 = '#00006400'; my_darkgreen_20 = '#20006400';
my_darkgreen_40 = '#40006400'; my_darkgreen_60 = '#60006400';
my_darkgreen_80 = '#80006400'; my_darkgreen_a0 = '#a0006400';
my_darkgreen_c0 = '#c0006400'; my_darkgreen_e0 = '#e0006400';
#
my_darkblue_00 = '#0000008B'; my_darkblue_20 = '#2000008B';
my_darkblue_40 = '#4000008B'; my_darkblue_60 = '#6000008B';
my_darkblue_80 = '#8000008B'; my_darkblue_a0 = '#a000008B';
my_darkblue_c0 = '#c000008B'; my_darkblue_e0 = '#e000008B';
#
my_darkmagenta_00 = '#008B008B'; my_darkmagenta_20 = '#208B008B';
my_darkmagenta_40 = '#408B008B'; my_darkmagenta_60 = '#608B008B';
my_darkmagenta_80 = '#808B008B'; my_darkmagenta_a0 = '#a08B008B';
my_darkmagenta_c0 = '#c08B008B'; my_darkmagenta_e0 = '#e08B008B';
#
my_darkorange_00 = '#00FF8C00'; my_darkorange_20 = '#20FF8C00';
my_darkorange_40 = '#40FF8C00'; my_darkorange_60 = '#60FF8C00';
my_darkorange_80 = '#80FF8C00'; my_darkorange_a0 = '#a0FF8C00';
my_darkorange_c0 = '#c0FF8C00'; my_darkorange_e0 = '#e0FF8C00';
#
my_darkturquoise_00 = '#0000CED1'; my_darkturquoise_20 = '#2000CED1';
my_darkturquoise_40 = '#4000CED1'; my_darkturquoise_60 = '#6000CED1';
my_darkturquoise_80 = '#8000CED1'; my_darkturquoise_a0 = '#a000CED1';
my_darkturquoise_c0 = '#c000CED1'; my_darkturquoise_e0 = '#e000CED1';
#
my_black_00 = '#00000000'; my_black_20 = '#20000000';
my_black_40 = '#40000000'; my_black_60 = '#60000000';
my_black_80 = '#80000000'; my_black_a0 = '#a0000000';
my_black_c0 = '#c0000000'; my_black_e0 = '#e0000000';
# Bereiche/Format/etc X-Achse
set xdata time # X-Achse als Zeitachse
set xlabel 'Jahr' # Beschriftung X-Achse
set xlabel offset 0, 0.75 # Schrift etwas höher
set xrange [ my_xrange_min : my_xrange_max]
# Wertebreich der X-Achse
set xtics '01.01.1000', (60*60*24*365.25) * my_xtics_years
# xtics in Sekunden
# der Beginn (Wert vor dem Komma) der X-Einteilung
# kann außerhalb xrange liegen
set xtics offset 0, 0.5 # Beschriftung näher an die X-Achse
set mxtics my_mxtics # Skalenstriche
set xtics nomirror # Nur unten Skalieren
set format x '%3Y' # Beschr.format JJJJ (bei 3 Stellen o. führend 0)
set xtics out # Skal. aussen damit sie nicht von Grafik
# überschr. wird
# Bereiche/Format/etc Y-Achse
set ylabel 'Einwohnerzahl' offset 2 # Abstand Achse/Label
# Untere Begrenzung des Bereichs der Y-Achse
set yrange [ my_yrange_min : ]
# Obere Begrenzung des Bereichs der Y-Achse
# wir Testen ob der Wert der Var. my_yrange_max ein '*' ist und reagieren
# entsprechend weil der '*' sich nicht direkt via Var. setzen lässt.
if ( ( my_yrange_max eq '*' )) set yrange [ : * ]
if (!( my_yrange_max eq '*' )) set yrange [ : my_yrange_max ]
set ytics my_ytics # Anzahl der kleinen Teilstriche
set ytics offset 0.5 # Schrift etwas nach rechts
set ytics nomirror # oben keine Teilstriche
set decimalsign locale "de_DE.utf8" # Stelle Input und Output auf "," um
# set decimalsign ',' würde nur Output umstellen,
set format y "%'.0f" # Ausgabeformat
set mytics my_ymtics # Unterskalierung
set ytics out # Skal. aussen da sie sonst von Grafik
# überschr. wird
#### Markierungsbalken für die beiden Weltkriege etc.
# Die set-Befehle ggf. auskommentieren
# Attribute für Markierungsbalken
set style rect fillcolor lt -1 fillstyle solid 0.1 noborder
#
# == Dreißigjähriger Krieg
set obj rect from '23.05.1618', graph 0 to '24.10.1648' , graph 1 back
set label "Dreißigjähriger Krieg" at '30.06.1648', graph 0.5 rotate by +60 center front
# == Siebenjähriger Krieg
# set obj rect from '29.08.1756', graph 0 to '21.09.1762' , graph 1 back
# set label "Siebenjähriger Krieg" at '30.06.1759', graph 0.8 rotate by +60 center front
# == Hamburger Franzosenzeit
# set obj rect from '30.06.1806', graph 0 to '30.06.1814' , graph 1
# set label "H. Franzosenzeit" at '01.01.1810', graph 0.3 rotate by +60 center
# == Befreiungskriege
#set obj rect from '26.02.1813', graph 0 to '20.11.1815' , graph 1 back
#set label "Befreiungskriege" at '30.06.1814', graph 0.8 rotate by +60 center front
# == 1. Weltkrieg
set obj rect from '28.07.1914', graph 0 to '11.11.1918' , graph 1 front
set label "1. Weltkrieg" at '30.06.1916', graph 0.9 rotate by +60 center front
# == 2. Weltkrieg
set obj rect from '01.09.1939', graph 0 to '04.05.1945' , graph 1 front
set label "2. Weltkrieg" at '30.06.1942', graph 0.9 rotate by +60 center front
# == Dädärä
# set obj rect from '07.10.1949', graph 0 to '03.10.1990' , graph 1 back
# set label "DDR" at '01.01.1970', graph 0.9 rotate by +60 center front
#
# == Markierung für Großstadtgrenze
# Mit Ein-/Auskommentieren festlegen ob bei 100.000 eine vertikale Linie gezogen werden soll
set arrow from my_xrange_min, '100000' to my_xrange_max, '100000' nohead lc rgb '#B0FF0000' back
# == Markierung für Millionenstadtgrenze
# Mit Ein-/Auskommentieren festlegen ob bei 100.000 eine vertikale Linie gezogen werden soll
set arrow from my_xrange_min, '1000000' to my_xrange_max, '1000000' nohead lc rgb '#B0FF0000' back
# == Einzelwerte
# set label 1 'Wert 1' at '25.05.1987',5000 point pointtype 3 pointsize 0.8
# set label 2 'Wert 2' at '09.05.2011',10000 point pointtype 3 pointsize 0.8
# Außenränder (keine Angabe entspricht Automatik)
set bmargin
set lmargin
set rmargin 1.5 # rechts entspr. der Wert bei Auto etwa 2.8
set tmargin
# Ausgabeformat: Wir erzeugen SVG
# Die Ausgabedaten leiten wir bei UNIX in eine Pipe und sind so beim Namen der
# Ausgabedatei flexibel (Aufruf: Progname.plt > Ausgabe-svg)
# Windowsbenutzer, die mit Pipes nicht umgehen könnten, sollten das Kommentar-
# zeichen vor dem 'set output ...' folgenden Befehl entfernen.
# set output 'Einwohnerentwicklung_von_Bonn.svg'
set term svg size 800,400 font "Arial,16"
# Die Parameter von 'set term' sind so gewählt, das man in Wikipedia bei einer
# Einbindung [[Datei:Einwohnerentwicklung_von_Bonn.svg|mini|400px|Text]] noch Schrift/Details
# erkennen kann.
# Abkürzungen hinter dem Plot-Befehl:
# u : using
# w : with
# lc : linecolor
# lt : linetype
# lw : linewidth
# pt : pointtype
# ps : pointsize
# lp : linespoints
# p : points
# t : title
# not : notitle
# filledc : filledcurves (Bsp.: File:Einwohnerentwicklung von Wanne-Eickel.svg)
# rgb : RedGreenBlue
# Daten per Here-Document
# (siehe Abschntt 'Inline data and datablocks' in
# http://www.gnuplot.info/docs_5.2/Gnuplot_5.2.pdf )
#
$my_HD_1 << EndOfData_1
# bei 'plot' mit '$my_HD_1 use 1:2 with ...' einbinden
...
EndOfData_1
# Jede Kurve wird zweimal gezeichnet. Beim ersten mal mit etwas Transparenz
# damit es heller wird. Beim zweiten mal werden die Punkt dunkel
# nachgezeichnet. Dadurch sollte der Betrachter besser erkennen können, wo
# Messpunkte fehlen.
#
# Erzeugen der Ausgabe
plot \
my_data u 1:2 w lp lc rgb my_darkblue_40 lt 1 lw 1.5 pt 7 ps 0.22 t 'Einw. Entw.',\
my_data u 1:2 w p lc rgb my_darkblue_00 lt 1 lw 1.5 pt 7 ps 0.22 not ,\
# $my_HD_1 u 1:2 w lp lc rgb my_darkred_40 lt 1 lw 1.5 pt 7 ps 0.22 t 'Einw. Entw.',\
# $my_HD_1 u 1:2 w p lc rgb my_darkred_00 lt 1 lw 1.5 pt 7 ps 0.22 not ,\
Daten
Die folgenden Daten bitte in eine Textdatei unter dem Namen "Einwohnerentwicklung_von_Bonn.dat" abspeichern und ins gleiche Verzeichnis wie das GnuPlot-Script ablegen.
Update der Daten und Überschreiben der Grafik ausdrücklich erwünscht (bei Problemen beim Erstellen einer neuen Grafik unter de:Benutzer Diskussion:Summer ... hier! oder de:Wikipedia:Grafikwerkstatt nachfragen).
Vor Änderungen der Struktur dieses Abschnitts bitte beachten, das die Daten zur Wartung anderer Grafiken benutzt werden. Dies sind Dateien, die möglicherweise die Daten dieses Abschnitts verwenden.
#
# Quelle:
# https://de.wikipedia.org/key/Einwohnerentwicklung_von_Bonn
#
30.06.1620;4500
30.06.1720;6535
30.06.1732;8015
30.06.1760;13500
30.06.1784;12644
30.06.1790;10487
30.06.1798;8837
30.06.1808;8219
30.06.1815;9311
01.12.1816;9926
01.12.1817;10970
01.12.1831;12763
03.12.1834;12542
#
03.12.1840;15050
03.12.1843;16086
03.12.1846;17223
03.12.1849;17688
03.12.1852;18439
03.12.1855;18816
03.12.1858;18977
03.12.1861;19996
03.12.1864;22492
03.12.1867;23801
#
#
#
#
01.12.1871;26030
01.12.1875;28075
01.12.1880;31500
01.12.1885;35989
01.12.1890;39805
02.12.1895;44558
01.12.1900;50736
31.12.1901;51063
31.12.1902;53023
31.12.1903;54787
31.12.1904;78342
01.12.1905;81996
31.12.1906;82521
31.12.1907;84886
31.12.1908;87668
#
31.12.1909;89694
01.12.1910;87978
01.12.1916;83778
05.12.1917;86412
08.10.1919;91410
31.12.1919;92177
31.12.1920;93806
31.12.1921;93448
31.12.1922;92778
31.12.1923;90502
31.12.1924;90879
16.06.1925;90249
31.12.1925;90529
31.12.1926;91505
31.12.1927;92719
#
31.12.1928;92693
31.12.1929;92098
31.12.1930;92124
31.12.1931;91135
31.12.1932;91828
16.06.1933;98659
31.12.1933;99210
31.12.1934;100073
31.12.1935;100904
31.12.1936;102080
31.12.1937;102526
31.12.1938;101500
17.05.1939;100788
31.12.1940;101500
#
#
#
#
30.04.1945;43000
31.12.1945;91332
29.10.1946;94694
31.12.1946;99098
31.12.1947;103437
13.09.1950;115394
31.12.1951;125602
31.12.1952;130091
31.12.1953;135373
25.09.1956;136031
06.06.1961;143850
31.12.1961;143961
31.12.1962;143763
31.12.1963;142577
#
31.12.1964;141308
31.12.1965;139791
31.12.1966;136252
31.12.1967;136252
31.12.1968;134740
31.12.1969;299376
27.05.1970;274518
31.12.1970;275722
31.12.1971;278778
31.12.1972;281089
31.12.1973;283260
31.12.1974;283891
31.12.1975;283711
31.12.1976;284957
#
31.12.1977;284003
31.12.1978;285138
31.12.1979;286184
31.12.1980;288148
31.12.1981;291464
31.12.1982;293852
31.12.1983;291509
31.12.1984;291291
31.12.1985;290769
31.12.1986;291439
25.05.1987;276653
31.12.1987;278180
31.12.1988;282190
31.12.1989;287117
#
#
#
#
31.12.1990;292234
31.12.1991;296244
31.12.1992;298227
31.12.1993;296859
31.12.1994;293072
31.12.1995;291431
31.12.1996;302873
31.12.1997;304841
31.12.1998;304639
31.12.1999;301048
31.12.2000;302247
#
31.12.2001;306016
31.12.2002;308921
31.12.2003;311052
31.12.2004;311938
31.12.2005;312818
31.12.2006;314299
31.12.2007;316416
31.12.2008;317949
31.12.2009;319841
31.12.2010;324899
31.12.2011;327503
#
31.12.2012;309869
31.12.2013;311287
31.12.2014;313958
31.12.2015;318809
31.12.2016;322125
31.12.2017;325490
# EOF