Original file (SVG file, nominally 800 × 400 pixels, file size: 77 KB)
http://creativecommons.org/publicdomain/zero/1.0/deed.en CC0 Creative Commons Zero, Public Domain Dedication false false
#!/usr/bin/gnuplot # gnuplot ### Variablen - die wichtigsten Paramter dieser Grafik: # (in der Regel wird es reichen fur eine neue Grafik diese Werte zu andern) my_data = 'Einwohnerentwicklung_von_Kassel.dat' my_xrange_min = '01.01.1460' my_xrange_max = '31.12.2018' my_xtics_years = '100' my_mxtics = '5' my_yrange_min = '0' # bei '-1' wird der erste # Achenstrich unter Null berechnet my_yrange_max = '*' # hier ist '*' erlaubt und sinnvoll my_ytics = '50000' my_ymtics = '5' ist_gemeinde = '1' # 1 fur ja, 0 fur nein # Falls ja, werden Marker fur Grossstadt # und Mio.Stadt gesetzt WW1 = '0.90' # horiz. Pos. des WW1 Schriftzugs WW2 = '0.15' # horiz. Pos. des WW2 Schriftzugs DDR = '0.00' # horiz. Pos. des Deut.Einheit-Schriftzugs # (0 entspr. keiner Ausgabe) ### 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",strco l ( 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 konnen 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 at graph 0.05 , 0.95 # ?egende weit links-oben (mit Angaben bez. auf Graph) set key left top # Punkt an dem die Legendenbox ausgerichtet wird set key nobox # kein Rahmen (zu Testzwecken box setzen!) set key noopaque # Transparenz set key samplen 2 # Breite der Linenbeispiele unset key # direkt vorher gesetzte Werte aufheben; ggf. das # uset auskommentieren, dann wird die Legende nach # den Angabe davor gesetzt! set style data lines # wird bei 'plot' uberschrieben set style fill transparent solid 0.4 # wird ebenfalls bei 'plot' uberschrieben set border 3 # Rahmen unten (Bit 1) und links (+ Bit 2) set grid # Gitterlinien verwenden # Gitterlinien per Hand setzen falls gewunscht set style line 1 linetype rgb '#4F4F4F' linewidth 0.5 dashtype 2 # Def. Major-grid set style line 2 linetype rgb '#9F9F9F' 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 fur 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 hoher 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 naher 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. fuhrend 0) set xtics out # Skal. aussen damit sie nicht von Grafik # uberschr. wird # Bereiche/Format/etc Y-Achse set ylabel 'Einwohnerzahl' offset 2 # Abstand Achse/Label # Untere Begrenzung des Bereichs der Y-Achse # Falls my_yrange_min wird der erste Achsenstrich unterhalb der # Nulllinie berechnet if ( my_yrange_min eq '-1' ) my_yrange_min = - my_ytics / my_ymtics 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 lasst. 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 ',' wurde nur Output umstellen, set format y "%'.0f" # Ausgabeformat set mytics my_ymtics # Unterskalierung set ytics out # Skal. aussen da sie sonst von Grafik # uberschr. wird ### Markierungsbalken fur die beiden Weltkriege etc. # Die set-Befehle ggf. auskommentieren # Attribute fur Markierungsbalken set style rect fillcolor lt -1 fillstyle solid 0.1 noborder # # == Dreißigjahriger Krieg set obj rect from '23.05.1618' , graph 0 to '24.10.1648' , graph 1 back set label "Dreißigjahriger Krieg" at '30.06.1633' , graph 0.8 rotate by + 60 center front # == Siebenjahriger Krieg # set obj rect from '29.08.1756', graph 0 to '21.09.1762' , graph 1 back # set label "Siebenjahriger 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 back # set label "H. Franzosenzeit" at '01.01.1810', graph 0.3 rotate by +60 center front # == 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 back set label "1. Weltkrieg" at '30.06.1916' , graph WW1 rotate by + 60 center front # == 2. Weltkrieg set obj rect from '01.09.1939' , graph 0 to '04.05.1945' , graph 1 back set label "2. Weltkrieg" at '30.06.1942' , graph WW2 rotate by + 60 center front # == Dadara if ( DDR > 0 ) { set obj rect from '07.10.1949' , graph 0 to '03.10.1990' , graph 1 back set label "Deut. Teilung" at '01.01.1970' , graph DDR rotate by + 60 center front } ### Markierung fur Groß- und Millionenstadtgrenze # wenn oben die Variable 'gemeinde' auf '1' gesetzt wurde setzen wir Maker if ( ist_gemeinde eq '1' ) { # je einen Marker (arrow) fur 100.000 und 1.000.000 set arrow from my_xrange_min , '100000' to my_xrange_max , '100000' nohead lc rgb '#B0FF0000' back set arrow from my_xrange_min , '1000000' to my_xrange_max , '1000000' nohead lc rgb '#B0FF0000' back } ### Einzelwerte (Beispiel) # set label 1 'Bsp. Text 1' at '25.05.1987', 5000 point pointtype 3 pointsize 0.8 # set label 2 'Bsp. Text 2' at '09.05.2011', 10000 point pointtype 3 pointsize 0.8 ### Außenrander (keine Angabe entspricht Automatik) # keine Angabe hinter Xmargin entspr auto # zur Positionierung siehe 'Coordinates' in: # http://gnuplot.sourceforge.net/docs_4.2/node49.html#448 set lmargin set rmargin at screen 0.990 set bmargin at screen 0.175 set tmargin at screen 0.960 # grauer Hintergrund fur Testzwecke # set object rectangle from screen 0,0 to screen 1,1 fillcolor rgb my_black_e0 behind ### Dateiausgabe definieren # Ausgabeformat: Wir erzeugen SVG # Die Ausgabedaten leiten wir bei UNIX in eine Pipe und sind so beim Namen der # Ausgabedatei flexibel (Aufruf: Einwohnerentwicklung_von_Kassel.gpl > Einwohnerentwicklung_von_Kassel.svg) # Windowsbenutzer, die mit Pipes nicht umgehen konnten, sollten das Kommentar- # zeichen vor dem 'set output ...' folgenden Befehl entfernen. # set output 'Einwohnerentwicklung_von_Kassel.svg' set term svg size 800 , 400 font "Arial,16" # Die Parameter von 'set term' sind so gewahlt, das man in Wikipedia bei einer # Einbindung [[Datei:Einwohnerentwicklung_von_Kassel.svg|mini|400px|Text]] noch Schrift/Details # erkennen kann. ### Log10 Skalierung fur Y-Achse wahlen # Fur Formatparam siehe http://gnuplot.sourceforge.net/docs_4.2/node184.html # Wert fur ytics hier mit 10 Uberschreiben damit die Mantisse wegfallen kann. # Ansonsten musste sie wie in 'set format y "%.1l*10^{%L}"; set ytics 5' angegeben # werden was ungerade Werte ergibt. # xrange muss großer Null beginnen. Kann oben mit my_yrange_min auf 10, 100, 1000 ... # gesetzt werden oder hier auskommentieren. # set logscale y 10; set format y " 10^{%L}"; set ytics 10; set mytics 10; # set lmargin 5 # ev. bei 'Schwestergrafik' gleichen fixen Wert setzen. # set yrange [ 100 : 1000000 ] # yrange manuell Anpassen!!! ### Abkurzungen 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 # ax ; axes (bei der Plotanweisung meist x1y1) ### 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 ### Plot # 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 konnen, wo # Messpunkte fehlen. # # Erzeugen der Ausgabe plot \ my_data u 1 : 2 ax x1y1 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 ax x1y1 w p lc rgb my_darkblue_00 lt 1 lw 1.5 pt 7 ps 0.22 not , \ # $my_HD_1 u 1:2 ax x1y1 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 ax x1y1 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_Kassel.dat" abspeichern und ins gleiche Verzeichnis wie das GnuPlot-Script ablegen.
Update der Daten und Uberschreiben der Grafik ausdrucklich erwunscht (bei Problemen beim Erstellen einer neuen Grafik unter de:Benutzer Diskussion:Summer ... hier! oder de:Wikipedia:Grafikwerkstatt nachfragen).
Vor Anderungen der Struktur dieses Abschnitts bitte beachten, das die Daten zur Wartung anderer Grafiken benutzt werden. Dies sind Dateien , die moglicherweise die Daten dieses Abschnitts verwenden.
# # Quelle: # https://de.wikipedia.org/wiki/Einwohnerentwicklung_von_Kassel#Einwohnerentwicklung # 30.06.1472 ; 4500 30.06.1626 ; 6329 30.06.1773 ; 17311 30.06.1781 ; 19003 30.06.1795 ; 17625 30.06.1810 ; 23068 30.06.1819 ; 23296 30.06.1827 ; 24825 30.06.1832 ; 27302 03.12.1834 ; 29931 03.12.1837 ; 31349 # 03.12.1840 ; 31819 15.01.1840 ; 32516 03.12.1846 ; 34547 03.12.1849 ; 35794 03.12.1852 ; 36654 03.12.1855 ; 36849 03.12.1858 ; 37060 03.12.1861 ; 38930 03.12.1864 ; 40228 03.12.1867 ; 41587 # # # 01.12.1871 ; 46362 01.12.1875 ; 53043 01.12.1880 ; 58290 01.12.1885 ; 64088 01.12.1890 ; 72477 02.12.1895 ; 81752 31.12.1896 ; 84440 31.12.1897 ; 87740 31.12.1898 ; 90090 31.12.1899 ; 102910 01.12.1900 ; 106034 31.12.1901 ; 109810 31.12.1902 ; 113380 31.12.1903 ; 117100 31.12.1904 ; 117700 01.12.1905 ; 120467 31.12.1906 ; 142009 31.12.1907 ; 144865 # 31.12.1908 ; 147721 31.12.1909 ; 150577 01.12.1910 ; 153196 31.12.1911 ; 153100 31.12.1912 ; 154928 31.12.1913 ; 157900 01.12.1916 ; 158842 05.12.1917 ; 162717 08.10.1919 ; 162391 31.12.1919 ; 165337 31.12.1920 ; 165142 31.12.1921 ; 167055 31.12.1922 ; 166484 31.12.1923 ; 166301 31.12.1924 ; 167688 16.06.1925 ; 171483 31.12.1925 ; 171732 31.12.1926 ; 172186 # 31.12.1927 ; 173110 31.12.1928 ; 174926 31.12.1929 ; 175279 31.12.1930 ; 174893 31.12.1931 ; 174621 31.12.1932 ; 173745 16.06.1933 ; 175179 31.12.1933 ; 175393 31.12.1934 ; 176898 31.12.1935 ; 179097 31.12.1936 ; 203418 31.12.1937 ; 208438 31.12.1938 ; 214900 17.05.1939 ; 216141 31.12.1939 ; 218400 31.12.1940 ; 221700 22.10.1943 ; 225694 # # # 08.05.1945 ; 71209 31.12.1945 ; 116099 29.10.1946 ; 127568 31.12.1947 ; 140137 13.09.1950 ; 162132 31.12.1951 ; 171839 31.12.1952 ; 176593 31.12.1953 ; 182377 25.09.1956 ; 191935 06.06.1961 ; 207507 31.12.1961 ; 208955 31.12.1962 ; 211510 31.12.1963 ; 212160 31.12.1964 ; 214149 # 31.12.1965 ; 214609 31.12.1966 ; 213084 31.12.1967 ; 211586 31.12.1968 ; 212920 31.12.1969 ; 213494 27.05.1970 ; 214156 31.12.1970 ; 214785 31.12.1971 ; 215039 31.12.1972 ; 212482 31.12.1973 ; 212575 31.12.1974 ; 210042 31.12.1975 ; 205534 31.12.1976 ; 201705 31.12.1977 ; 199450 # 31.12.1978 ; 197677 31.12.1979 ; 196224 31.12.1980 ; 195912 31.12.1981 ; 194779 31.12.1982 ; 192338 31.12.1983 ; 188356 31.12.1984 ; 184997 31.12.1985 ; 184466 31.12.1986 ; 185370 25.05.1987 ; 187288 31.12.1987 ; 188096 31.12.1988 ; 189156 31.12.1989 ; 191598 # # # 31.12.1990 ; 194268 31.12.1991 ; 196828 31.12.1992 ; 199935 31.12.1993 ; 202158 31.12.1994 ; 201789 31.12.1995 ; 201573 31.12.1996 ; 200927 31.12.1997 ; 199453 31.12.1998 ; 198071 31.12.1999 ; 196211 # 31.12.2000 ; 194766 31.12.2001 ; 194748 31.12.2002 ; 194146 31.12.2003 ; 194322 31.12.2004 ; 194464 31.12.2005 ; 194427 31.12.2006 ; 193518 31.12.2007 ; 193803 31.12.2008 ; 194168 31.12.2009 ; 194774 # 31.12.2010 ; 195530 09.05.2011 ; 190765 # 31.12.2011 ; 196526 auf Disk zur Loschung vorgeschlagen 31.12.2011 ; 191854 30.09.2013 ; 193377 31.12.2014 ; 194747 30.06.2015 ; 195239 31.12.2017 ; 200736 31.12.2018 ; 201585 # EOF
Click on a date/time to view the file as it appeared at that time.
You cannot overwrite this file.
There are no pages that use this file.
The following other wikis use this file:
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.