Ich, der Urheber dieses Werkes, veröffentliche es unter der folgenden Lizenz:
Die Person, die das Werk mit diesem Dokument verbunden hat, übergibt dieses weltweit der
Gemeinfreiheit, indem sie alle Urheberrechte und damit verbundenen weiteren Rechte – im Rahmen der jeweils geltenden gesetzlichen Bestimmungen – aufgibt. Das Werk kann – selbst für kommerzielle Zwecke – kopiert, modifiziert und weiterverteilt werden, ohne hierfür um Erlaubnis bitten zu müssen.
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse
#!/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_Lindlar.dat'
my_xrange_min='01.01.1816'
my_xrange_max='31.12.2017'
my_xtics_years='25'
my_mxtics='5'
my_yrange_min='0'
my_yrange_max='*'# Nur hier ist '*' erlaubt und sinnvoll
my_ytics='5000'
my_ymtics='5'
# Allgemeines zu den Eingabedaten
settimefmt"%d.%m.%Y"# Zeitangaben in TT.MM.YYYY
setdatafileseparator";"# Spaltenseparator
setdatafilecommentschars"#"# Kommentarzeichen
statsmy_datau(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
setkeyverticalmaxrows6# Max Anzahl Zeilen
setkeylefttop# Legende links oben
setkeyopaque# ohne Transparenz
setkeysamplen2# Breite der Linenbeispiele
unsetkey# direkt vorher gesetzte Werte aufgehoben; ggf auskommentieren!
setstyledatalines# wird bei 'plot' überschrieben
setstylefilltransparentsolid0.4# wird ebenfalls bei 'plot' überschrieben
setborder3# Rahmen unten (Bit 1) und links (+ Bit 2)
setgrid# Gitterlinien verwenden
# Gitterlinienen per Hand setzen falls gewünscht
setstyleline1linetypergb'#696969'linewidth0.5dashtype2# Def. Major-grid
setstyleline2linetypergb'#C9C9C9'linewidth0.5dashtype3# def. Minor-grid
setgridxticsmxtics# eventuell noxtics und nomxtics
setgridyticsmytics# eventuell noytics und nomytics
setgridback# Gitter im Hintergrund
setgridlinestyle1,linestyle2# 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
setxdatatime# X-Achse als Zeitachse
setxlabel'Jahr'# Beschriftung X-Achse
setxlabeloffset0,0.75# Schrift etwas höher
setxrange[my_xrange_min:my_xrange_max]
# Wertebreich der X-Achse
setxtics'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
setxticsoffset0,0.5# Beschriftung näher an die X-Achse
setmxticsmy_mxtics# Skalenstriche
setxticsnomirror# Nur unten Skalieren
setformatx'%3Y'# Beschr.format JJJJ (bei 3 Stellen o. führend 0)
setxticsout# Skal. aussen damit sie nicht von Grafik
# überschr. wird
# Bereiche/Format/etc Y-Achse
setylabel'Einwohnerzahl'offset2# Abstand Achse/Label
# Untere Begrenzung des Bereichs der Y-Achse
setyrange[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_maxeq'*'))setyrange[:*]
if (!(my_yrange_maxeq'*'))setyrange[:my_yrange_max]
setyticsmy_ytics# Anzahl der kleinen Teilstriche
setyticsoffset0.5# Schrift etwas nach rechts
setyticsnomirror# oben keine Teilstriche
setdecimalsignlocale"de_DE.utf8"# Stelle Input und Output auf "," um
# set decimalsign ',' würde nur Output umstellen,
setformaty"%'.0f"# Ausgabeformat
setmyticsmy_ymtics# Unterskalierung
setyticsout# 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
setstylerectfillcolorlt-1fillstylesolid0.1noborder
#
# == Dreißigjähriger Krieg
setobjrectfrom'23.05.1618',graph0to'24.10.1648',graph1back
setlabel"Dreißigjähriger Krieg"at'30.06.1633',graph0.8rotateby+60centerfront
# == 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
setobjrectfrom'28.07.1914',graph0to'11.11.1918',graph1front
setlabel"1. Weltkrieg"at'30.06.1916',graph0.9rotateby+60centerfront
# == 2. Weltkrieg
setobjrectfrom'01.09.1939',graph0to'04.05.1945',graph1front
setlabel"2. Weltkrieg"at'30.06.1942',graph0.9rotateby+60centerfront
# == 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
setarrowfrommy_xrange_min,'100000'tomy_xrange_max,'100000'noheadlcrgb'#B0FF0000'back
# == Markierung für Millionenstadtgrenze
# Mit Ein-/Auskommentieren festlegen ob bei 100.000 eine vertikale Linie gezogen werden soll
setarrowfrommy_xrange_min,'1000000'tomy_xrange_max,'1000000'noheadlcrgb'#B0FF0000'back
# Außenränder (keine Angabe entspricht Automatik)
setbmargin
setlmargin
setrmargin1.5# rechts entspr. der Wert bei Auto etwa 2.8
settmargin
# 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_Lindlar.svg'
settermsvgsize800,400font"Arial,16"
# Die Parameter von 'set term' sind so gewählt, das man in Wikipedia bei einer
# Einbindung [[Datei:Einwohnerentwicklung_von_Lindlar.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_datau1:2wlplcrgbmy_darkblue_40lt1lw1.5pt7ps0.22t'Einw. Entw.',\
my_datau1:2wplcrgbmy_darkblue_00lt1lw1.5pt7ps0.22not,\
# $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 ,\
Die folgenden Daten bitte in eine Textdatei unter dem Namen "Einwohnerentwicklung_von_Lindlar.dat" abspeichern und ins gleiche Verzeichnis wie das GnuPlot-Script ablegen.
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.