diff --git a/docs/FreeBedsChartView.js b/docs/FreeBedsChartView.js index 4ad0fc95cbc..437857d63f9 100644 --- a/docs/FreeBedsChartView.js +++ b/docs/FreeBedsChartView.js @@ -11,12 +11,13 @@ class FreeBedsChartView { if (this.#chart != null) { this.#chart.destroy(); } + const label = 'Anteil freier Betten'; this.#chart = new Chart( this.#canvas, { type: 'line', - data: this.#getData(data), - options: this.#getOptions(title), + data: this.#getData(data, label), + options: this.#getOptions(title, label), plugins: [this.#getBackgroundTrafficLightsPlugin()] }); } @@ -47,11 +48,11 @@ class FreeBedsChartView { return { beforeDraw: drawTrafficLights }; } - #getData(data) { + #getData(data, label) { return { datasets: [ { - label: 'Anteil freier Betten', + label: label, data: data, parsing: { yAxisKey: 'free_beds_divided_by_all_beds_in_percent' @@ -59,7 +60,7 @@ class FreeBedsChartView { backgroundColor: 'rgba(0, 0, 150, 1)' }, { - label: 'Median des Anteils freier Betten', + label: 'Median der Anteile freier Betten', data: data, parsing: { yAxisKey: 'median_free_beds_in_percent' @@ -70,7 +71,7 @@ class FreeBedsChartView { }; } - #getOptions(title) { + #getOptions(title, label) { return { plugins: { title: { @@ -79,17 +80,7 @@ class FreeBedsChartView { }, tooltip: { callbacks: { - label: function (context) { - let label = context.dataset.label || ''; - - if (label) { - label += ': '; - } - if (context.parsed.y !== null) { - label += context.parsed.y.toFixed(1) + "%"; - } - return label; - } + label: UIUtils.getLabelWithPercent } } }, @@ -105,17 +96,7 @@ class FreeBedsChartView { } } }, - y: { - min: 0, - max: 100, - title: { - display: true, - text: "Anteil freier Betten" - }, - ticks: { - callback: value => value + "%" - } - } + y: UIUtils.getPercentageScale(label) }, parsing: { xAxisKey: 'date' diff --git a/docs/MedianOfFreeBedsByKreisChartView.js b/docs/MedianOfFreeBedsByKreisChartView.js new file mode 100644 index 00000000000..add365222b4 --- /dev/null +++ b/docs/MedianOfFreeBedsByKreisChartView.js @@ -0,0 +1,66 @@ +class MedianOfFreeBedsByKreisChartView { + + #canvas; + #chart; + + constructor(canvas) { + this.#canvas = canvas; + } + + displayChart(data) { + if (this.#chart != null) { + this.#chart.destroy(); + } + const label = 'Median der Anteile freier Betten'; + this.#chart = new Chart( + this.#canvas, + { + type: 'bar', + data: this.#getData(data, label), + options: this.#getOptions(label) + }); + } + + setData(data) { + this.#chart.config.data.datasets[0].data = data; + this.#chart.update(); + } + + #getData(data, label) { + return { + datasets: [ + { + label: label, + data: data, + parsing: { + yAxisKey: 'median_free_beds_in_percent' + }, + backgroundColor: 'rgba(0, 255, 0, 1)' + } + ] + }; + } + + #getOptions(label) { + return { + plugins: { + title: { + display: true, + text: label + }, + tooltip: { + callbacks: { + label: UIUtils.getLabelWithPercent + } + } + }, + responsive: true, + scales: { + y: UIUtils.getPercentageScale(label) + }, + parsing: { + xAxisKey: 'Kreis' + } + }; + } +} \ No newline at end of file diff --git a/docs/UIUtils.js b/docs/UIUtils.js index ca1bb40abf8..d637fc26124 100644 --- a/docs/UIUtils.js +++ b/docs/UIUtils.js @@ -16,4 +16,30 @@ class UIUtils { static getSelectedOption(selectElement) { return selectElement.options[selectElement.selectedIndex]; } + + static getLabelWithPercent(context) { + let label = context.dataset.label || ''; + + if (label) { + label += ': '; + } + if (context.parsed.y !== null) { + label += context.parsed.y.toFixed(1) + "%"; + } + return label; + } + + static getPercentageScale(label) { + return { + min: 0, + max: 100, + title: { + display: true, + text: label + }, + ticks: { + callback: value => value + "%" + } + } + } } diff --git a/docs/data/intensivstationen/medianOfFreeBedsByKreisTable.json b/docs/data/intensivstationen/medianOfFreeBedsByKreisTable.json new file mode 100644 index 00000000000..60e995f85cc --- /dev/null +++ b/docs/data/intensivstationen/medianOfFreeBedsByKreisTable.json @@ -0,0 +1,1538 @@ +[ + { + "Kreis": "S\u00fcdwestpfalz", + "median_free_beds_in_percent": 66.6666666667 + }, + { + "Kreis": "Kaiserslautern", + "median_free_beds_in_percent": 57.1428571429 + }, + { + "Kreis": "Wunsiedel i.Fichtelgebirge", + "median_free_beds_in_percent": 50.0 + }, + { + "Kreis": "Suhl, Stadt", + "median_free_beds_in_percent": 46.875 + }, + { + "Kreis": "Cochem-Zell", + "median_free_beds_in_percent": 46.1538461538 + }, + { + "Kreis": "Zweibr\u00fccken, kreisfreie Stadt", + "median_free_beds_in_percent": 44.4444444444 + }, + { + "Kreis": "Olpe", + "median_free_beds_in_percent": 44.4444444444 + }, + { + "Kreis": "Trier-Saarburg", + "median_free_beds_in_percent": 42.8571428571 + }, + { + "Kreis": "Altenkirchen (Westerwald)", + "median_free_beds_in_percent": 42.8571428571 + }, + { + "Kreis": "Pl\u00f6n", + "median_free_beds_in_percent": 41.6666666667 + }, + { + "Kreis": "Landau in der Pfalz, kreisfreie Stadt", + "median_free_beds_in_percent": 41.3793103448 + }, + { + "Kreis": "Amberg-Sulzbach", + "median_free_beds_in_percent": 40.0 + }, + { + "Kreis": "Saale-Orla-Kreis", + "median_free_beds_in_percent": 40.0 + }, + { + "Kreis": "Anhalt-Bitterfeld", + "median_free_beds_in_percent": 39.3939393939 + }, + { + "Kreis": "Merzig-Wadern", + "median_free_beds_in_percent": 38.8888888889 + }, + { + "Kreis": "Cuxhaven", + "median_free_beds_in_percent": 38.8888888889 + }, + { + "Kreis": "Nordwestmecklenburg", + "median_free_beds_in_percent": 38.0 + }, + { + "Kreis": "Leer", + "median_free_beds_in_percent": 37.5 + }, + { + "Kreis": "Elbe-Elster", + "median_free_beds_in_percent": 37.5 + }, + { + "Kreis": "Rhein-Hunsr\u00fcck-Kreis", + "median_free_beds_in_percent": 37.5 + }, + { + "Kreis": "Nordhausen", + "median_free_beds_in_percent": 36.5384615385 + }, + { + "Kreis": "Straubing-Bogen", + "median_free_beds_in_percent": 36.3636363636 + }, + { + "Kreis": "Saalfeld-Rudolstadt", + "median_free_beds_in_percent": 36.3636363636 + }, + { + "Kreis": "Main-Tauber-Kreis", + "median_free_beds_in_percent": 35.4838709677 + }, + { + "Kreis": "Gotha", + "median_free_beds_in_percent": 35.2941176471 + }, + { + "Kreis": "Diepholz", + "median_free_beds_in_percent": 35.2941176471 + }, + { + "Kreis": "Landkreis Rostock", + "median_free_beds_in_percent": 35.2941176471 + }, + { + "Kreis": "Bodenseekreis", + "median_free_beds_in_percent": 35.1851851852 + }, + { + "Kreis": "Spree-Nei\u00dfe", + "median_free_beds_in_percent": 35.0 + }, + { + "Kreis": "Bottrop, Stadt", + "median_free_beds_in_percent": 34.8837209302 + }, + { + "Kreis": "Havelland", + "median_free_beds_in_percent": 34.7826086957 + }, + { + "Kreis": "Nordfriesland", + "median_free_beds_in_percent": 34.4827586207 + }, + { + "Kreis": "Neuburg-Schrobenhausen", + "median_free_beds_in_percent": 34.2857142857 + }, + { + "Kreis": "Mayen-Koblenz", + "median_free_beds_in_percent": 34.2105263158 + }, + { + "Kreis": "Stendal", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Neckar-Odenwald-Kreis", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Lindau (Bodensee)", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Germersheim", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Ha\u00dfberge", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Wittenberg", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Donnersbergkreis", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Weilheim-Schongau", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Bamberg", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Nordsachsen", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Bernkastel-Wittlich", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Werra-Mei\u00dfner-Kreis", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Kelheim", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Dessau-Ro\u00dflau, Stadt", + "median_free_beds_in_percent": 33.3333333333 + }, + { + "Kreis": "Amberg", + "median_free_beds_in_percent": 32.6923076923 + }, + { + "Kreis": "Emsland", + "median_free_beds_in_percent": 32.6086956522 + }, + { + "Kreis": "Bad Kreuznach", + "median_free_beds_in_percent": 31.914893617 + }, + { + "Kreis": "G\u00f6ppingen", + "median_free_beds_in_percent": 31.914893617 + }, + { + "Kreis": "Ostallg\u00e4u", + "median_free_beds_in_percent": 31.8181818182 + }, + { + "Kreis": "Emden, Stadt", + "median_free_beds_in_percent": 31.5789473684 + }, + { + "Kreis": "Borken", + "median_free_beds_in_percent": 31.5068493151 + }, + { + "Kreis": "Hochsauerlandkreis", + "median_free_beds_in_percent": 31.25 + }, + { + "Kreis": "Vulkaneifel", + "median_free_beds_in_percent": 31.25 + }, + { + "Kreis": "Pirmasens, kreisfreie Stadt", + "median_free_beds_in_percent": 31.25 + }, + { + "Kreis": "Rendsburg-Eckernf\u00f6rde", + "median_free_beds_in_percent": 31.1111111111 + }, + { + "Kreis": "Oberhavel", + "median_free_beds_in_percent": 31.0344827586 + }, + { + "Kreis": "Schwalm-Eder-Kreis", + "median_free_beds_in_percent": 31.0344827586 + }, + { + "Kreis": "Bad D\u00fcrkheim", + "median_free_beds_in_percent": 30.7692307692 + }, + { + "Kreis": "Steinburg", + "median_free_beds_in_percent": 30.612244898 + }, + { + "Kreis": "Vechta", + "median_free_beds_in_percent": 30.5555555556 + }, + { + "Kreis": "Segeberg", + "median_free_beds_in_percent": 30.3370786517 + }, + { + "Kreis": "Waldshut", + "median_free_beds_in_percent": 30.0 + }, + { + "Kreis": "Landsberg am Lech", + "median_free_beds_in_percent": 30.0 + }, + { + "Kreis": "Northeim", + "median_free_beds_in_percent": 30.0 + }, + { + "Kreis": "Kassel", + "median_free_beds_in_percent": 30.0 + }, + { + "Kreis": "Tuttlingen", + "median_free_beds_in_percent": 30.0 + }, + { + "Kreis": "Kiel, Landeshauptstadt", + "median_free_beds_in_percent": 29.8780487805 + }, + { + "Kreis": "Kleve", + "median_free_beds_in_percent": 29.7297297297 + }, + { + "Kreis": "Wesermarsch", + "median_free_beds_in_percent": 29.4117647059 + }, + { + "Kreis": "Ilm-Kreis", + "median_free_beds_in_percent": 29.4117647059 + }, + { + "Kreis": "Eichsfeld", + "median_free_beds_in_percent": 29.4117647059 + }, + { + "Kreis": "Westerwaldkreis", + "median_free_beds_in_percent": 29.2682926829 + }, + { + "Kreis": "Heidenheim", + "median_free_beds_in_percent": 29.1666666667 + }, + { + "Kreis": "Hamm, Stadt", + "median_free_beds_in_percent": 28.8888888889 + }, + { + "Kreis": "Uckermark", + "median_free_beds_in_percent": 28.8888888889 + }, + { + "Kreis": "Eifelkreis Bitburg-Pr\u00fcm", + "median_free_beds_in_percent": 28.5714285714 + }, + { + "Kreis": "Osterholz", + "median_free_beds_in_percent": 28.5714285714 + }, + { + "Kreis": "Forchheim", + "median_free_beds_in_percent": 28.5714285714 + }, + { + "Kreis": "Alzey-Worms", + "median_free_beds_in_percent": 28.5714285714 + }, + { + "Kreis": "Cham", + "median_free_beds_in_percent": 28.5714285714 + }, + { + "Kreis": "Prignitz", + "median_free_beds_in_percent": 28.5714285714 + }, + { + "Kreis": "Dillingen a.d.Donau", + "median_free_beds_in_percent": 28.5714285714 + }, + { + "Kreis": "Vogelsbergkreis", + "median_free_beds_in_percent": 28.5714285714 + }, + { + "Kreis": "Neuwied", + "median_free_beds_in_percent": 28.4090909091 + }, + { + "Kreis": "Hildesheim", + "median_free_beds_in_percent": 28.0 + }, + { + "Kreis": "Herzogtum Lauenburg", + "median_free_beds_in_percent": 27.7777777778 + }, + { + "Kreis": "Bautzen", + "median_free_beds_in_percent": 27.7777777778 + }, + { + "Kreis": "Freyung-Grafenau", + "median_free_beds_in_percent": 27.7777777778 + }, + { + "Kreis": "Steinfurt", + "median_free_beds_in_percent": 27.5862068966 + }, + { + "Kreis": "G\u00f6rlitz", + "median_free_beds_in_percent": 27.5862068966 + }, + { + "Kreis": "Ostholstein", + "median_free_beds_in_percent": 27.4509803922 + }, + { + "Kreis": "Holzminden", + "median_free_beds_in_percent": 27.2727272727 + }, + { + "Kreis": "Saalekreis", + "median_free_beds_in_percent": 27.2727272727 + }, + { + "Kreis": "Heidekreis", + "median_free_beds_in_percent": 27.2727272727 + }, + { + "Kreis": "Reutlingen", + "median_free_beds_in_percent": 27.2727272727 + }, + { + "Kreis": "Neu-Ulm", + "median_free_beds_in_percent": 27.2727272727 + }, + { + "Kreis": "Wesel", + "median_free_beds_in_percent": 27.2727272727 + }, + { + "Kreis": "Birkenfeld", + "median_free_beds_in_percent": 27.2727272727 + }, + { + "Kreis": "Warendorf", + "median_free_beds_in_percent": 27.0833333333 + }, + { + "Kreis": "Koblenz, kreisfreie Stadt", + "median_free_beds_in_percent": 27.027027027 + }, + { + "Kreis": "Wilhelmshaven, Stadt", + "median_free_beds_in_percent": 27.027027027 + }, + { + "Kreis": "Oder-Spree", + "median_free_beds_in_percent": 26.9841269841 + }, + { + "Kreis": "Schwandorf", + "median_free_beds_in_percent": 26.9230769231 + }, + { + "Kreis": "Frankenthal (Pfalz), kreisfreie Stadt", + "median_free_beds_in_percent": 26.6666666667 + }, + { + "Kreis": "Saarlouis", + "median_free_beds_in_percent": 26.6666666667 + }, + { + "Kreis": "L\u00fcneburg", + "median_free_beds_in_percent": 26.3157894737 + }, + { + "Kreis": "B\u00f6rde", + "median_free_beds_in_percent": 26.3157894737 + }, + { + "Kreis": "Vogtlandkreis", + "median_free_beds_in_percent": 26.1538461538 + }, + { + "Kreis": "M\u00e4rkisch-Oderland", + "median_free_beds_in_percent": 26.0869565217 + }, + { + "Kreis": "Cloppenburg", + "median_free_beds_in_percent": 26.0869565217 + }, + { + "Kreis": "Calw", + "median_free_beds_in_percent": 25.9259259259 + }, + { + "Kreis": "Jerichower Land", + "median_free_beds_in_percent": 25.9259259259 + }, + { + "Kreis": "Leipzig", + "median_free_beds_in_percent": 25.8620689655 + }, + { + "Kreis": "Mettmann", + "median_free_beds_in_percent": 25.7575757576 + }, + { + "Kreis": "Osnabr\u00fcck", + "median_free_beds_in_percent": 25.7142857143 + }, + { + "Kreis": "H\u00f6xter", + "median_free_beds_in_percent": 25.7142857143 + }, + { + "Kreis": "Potsdam, Stadt", + "median_free_beds_in_percent": 25.3521126761 + }, + { + "Kreis": "Main-Spessart", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Saale-Holzland-Kreis", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Hildburghausen", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Pfaffenhofen a.d.Ilm", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Rotenburg (W\u00fcmme)", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Ravensburg", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Oberallg\u00e4u", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Rheingau-Taunus-Kreis", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Sigmaringen", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Nienburg (Weser)", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Enzkreis", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Wei\u00dfenburg-Gunzenhausen", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Baden-Baden, Stadtkreis", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Sonneberg", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Stormarn", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Ansbach", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Aurich", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Wolfenb\u00fcttel", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Unterallg\u00e4u", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Bremerhaven, Stadt", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Schwabach", + "median_free_beds_in_percent": 25.0 + }, + { + "Kreis": "Hersfeld-Rotenburg", + "median_free_beds_in_percent": 24.5614035088 + }, + { + "Kreis": "Neunkirchen", + "median_free_beds_in_percent": 24.3243243243 + }, + { + "Kreis": "Rhein-Lahn-Kreis", + "median_free_beds_in_percent": 24.2424242424 + }, + { + "Kreis": "Hof", + "median_free_beds_in_percent": 24.2424242424 + }, + { + "Kreis": "Friesland", + "median_free_beds_in_percent": 24.2424242424 + }, + { + "Kreis": "Erzgebirgskreis", + "median_free_beds_in_percent": 24.2105263158 + }, + { + "Kreis": "Harz", + "median_free_beds_in_percent": 24.1379310345 + }, + { + "Kreis": "Salzgitter, Stadt", + "median_free_beds_in_percent": 24.1379310345 + }, + { + "Kreis": "Vorpommern-R\u00fcgen", + "median_free_beds_in_percent": 24.1379310345 + }, + { + "Kreis": "G\u00fctersloh", + "median_free_beds_in_percent": 24.0740740741 + }, + { + "Kreis": "Konstanz", + "median_free_beds_in_percent": 23.9130434783 + }, + { + "Kreis": "Ennepe-Ruhr-Kreis", + "median_free_beds_in_percent": 23.8805970149 + }, + { + "Kreis": "Oberhausen, Stadt", + "median_free_beds_in_percent": 23.6111111111 + }, + { + "Kreis": "Peine", + "median_free_beds_in_percent": 23.5294117647 + }, + { + "Kreis": "Gelsenkirchen, Stadt", + "median_free_beds_in_percent": 23.4693877551 + }, + { + "Kreis": "Passau", + "median_free_beds_in_percent": 23.4042553191 + }, + { + "Kreis": "Oberbergischer Kreis", + "median_free_beds_in_percent": 23.3333333333 + }, + { + "Kreis": "Ortenaukreis", + "median_free_beds_in_percent": 23.2558139535 + }, + { + "Kreis": "Coburg", + "median_free_beds_in_percent": 23.2558139535 + }, + { + "Kreis": "Regen", + "median_free_beds_in_percent": 23.0769230769 + }, + { + "Kreis": "S\u00fcdliche Weinstra\u00dfe", + "median_free_beds_in_percent": 23.0769230769 + }, + { + "Kreis": "Teltow-Fl\u00e4ming", + "median_free_beds_in_percent": 23.0769230769 + }, + { + "Kreis": "Wartburgkreis", + "median_free_beds_in_percent": 23.0769230769 + }, + { + "Kreis": "Braunschweig, Stadt", + "median_free_beds_in_percent": 23.0769230769 + }, + { + "Kreis": "Mansfeld-S\u00fcdharz", + "median_free_beds_in_percent": 23.0769230769 + }, + { + "Kreis": "Rems-Murr-Kreis", + "median_free_beds_in_percent": 22.9508196721 + }, + { + "Kreis": "Mittelsachsen", + "median_free_beds_in_percent": 22.9166666667 + }, + { + "Kreis": "Coesfeld", + "median_free_beds_in_percent": 22.5806451613 + }, + { + "Kreis": "Stade", + "median_free_beds_in_percent": 22.5806451613 + }, + { + "Kreis": "Bergstra\u00dfe", + "median_free_beds_in_percent": 22.5 + }, + { + "Kreis": "Herford", + "median_free_beds_in_percent": 22.4137931034 + }, + { + "Kreis": "Dingolfing-Landau", + "median_free_beds_in_percent": 22.2222222222 + }, + { + "Kreis": "Tirschenreuth", + "median_free_beds_in_percent": 22.2222222222 + }, + { + "Kreis": "Alb-Donau-Kreis", + "median_free_beds_in_percent": 22.2222222222 + }, + { + "Kreis": "Altmarkkreis Salzwedel", + "median_free_beds_in_percent": 22.2222222222 + }, + { + "Kreis": "Roth", + "median_free_beds_in_percent": 22.2222222222 + }, + { + "Kreis": "Wolfsburg, Stadt", + "median_free_beds_in_percent": 22.2222222222 + }, + { + "Kreis": "Schw\u00e4bisch Hall", + "median_free_beds_in_percent": 22.0 + }, + { + "Kreis": "L\u00f6rrach", + "median_free_beds_in_percent": 21.875 + }, + { + "Kreis": "Rhein-Erft-Kreis", + "median_free_beds_in_percent": 21.7948717949 + }, + { + "Kreis": "Ostalbkreis", + "median_free_beds_in_percent": 21.7391304348 + }, + { + "Kreis": "Ulm, Stadtkreis", + "median_free_beds_in_percent": 21.7054263566 + }, + { + "Kreis": "Dahme-Spreewald", + "median_free_beds_in_percent": 21.6216216216 + }, + { + "Kreis": "Weimar, Stadt", + "median_free_beds_in_percent": 21.4285714286 + }, + { + "Kreis": "St. Wendel", + "median_free_beds_in_percent": 21.4285714286 + }, + { + "Kreis": "Freudenstadt", + "median_free_beds_in_percent": 21.4285714286 + }, + { + "Kreis": "Straubing", + "median_free_beds_in_percent": 21.4285714286 + }, + { + "Kreis": "Augsburg", + "median_free_beds_in_percent": 21.3563218391 + }, + { + "Kreis": "Celle", + "median_free_beds_in_percent": 21.2121212121 + }, + { + "Kreis": "Ahrweiler", + "median_free_beds_in_percent": 21.0526315789 + }, + { + "Kreis": "Solingen, Klingenstadt", + "median_free_beds_in_percent": 21.0526315789 + }, + { + "Kreis": "L\u00fcbeck, Hansestadt", + "median_free_beds_in_percent": 21.0526315789 + }, + { + "Kreis": "M\u00e4rkischer Kreis", + "median_free_beds_in_percent": 20.9523809524 + }, + { + "Kreis": "Leverkusen, Stadt", + "median_free_beds_in_percent": 20.8955223881 + }, + { + "Kreis": "Miesbach", + "median_free_beds_in_percent": 20.8333333333 + }, + { + "Kreis": "Waldeck-Frankenberg", + "median_free_beds_in_percent": 20.7920792079 + }, + { + "Kreis": "Ludwigshafen am Rhein, kreisfreie Stadt", + "median_free_beds_in_percent": 20.6896551724 + }, + { + "Kreis": "Burgenlandkreis", + "median_free_beds_in_percent": 20.6896551724 + }, + { + "Kreis": "Darmstadt, Wissenschaftsstadt", + "median_free_beds_in_percent": 20.5607476636 + }, + { + "Kreis": "Recklinghausen", + "median_free_beds_in_percent": 20.5357142857 + }, + { + "Kreis": "Rostock", + "median_free_beds_in_percent": 20.5128205128 + }, + { + "Kreis": "Soest", + "median_free_beds_in_percent": 20.4819277108 + }, + { + "Kreis": "D\u00fcren", + "median_free_beds_in_percent": 20.3703703704 + }, + { + "Kreis": "Limburg-Weilburg", + "median_free_beds_in_percent": 20.3703703704 + }, + { + "Kreis": "Paderborn", + "median_free_beds_in_percent": 20.1923076923 + }, + { + "Kreis": "Trier, kreisfreie Stadt", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Viersen", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Heilbronn, Stadtkreis", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Hameln-Pyrmont", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "W\u00fcrzburg", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Ludwigslust-Parchim", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Brandenburg an der Havel, Stadt", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "M\u00fcnchen", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Starnberg", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Verden", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Frankfurt (Oder), Stadt", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Kronach", + "median_free_beds_in_percent": 20.0 + }, + { + "Kreis": "Hamburg, Freie und Hansestadt", + "median_free_beds_in_percent": 19.9683042789 + }, + { + "Kreis": "N\u00fcrnberg", + "median_free_beds_in_percent": 19.8952879581 + }, + { + "Kreis": "Leipzig, Stadt", + "median_free_beds_in_percent": 19.8895027624 + }, + { + "Kreis": "Mei\u00dfen", + "median_free_beds_in_percent": 19.696969697 + }, + { + "Kreis": "Garmisch-Partenkirchen", + "median_free_beds_in_percent": 19.5402298851 + }, + { + "Kreis": "Flensburg, Stadt", + "median_free_beds_in_percent": 19.512195122 + }, + { + "Kreis": "Vorpommern-Greifswald", + "median_free_beds_in_percent": 19.4690265487 + }, + { + "Kreis": "G\u00f6ttingen", + "median_free_beds_in_percent": 19.4444444444 + }, + { + "Kreis": "Zwickau", + "median_free_beds_in_percent": 19.4174757282 + }, + { + "Kreis": "Schwarzwald-Baar-Kreis", + "median_free_beds_in_percent": 19.298245614 + }, + { + "Kreis": "Schmalkalden-Meiningen", + "median_free_beds_in_percent": 19.2307692308 + }, + { + "Kreis": "Rheinisch-Bergischer Kreis", + "median_free_beds_in_percent": 19.1489361702 + }, + { + "Kreis": "Euskirchen", + "median_free_beds_in_percent": 19.1489361702 + }, + { + "Kreis": "Lichtenfels", + "median_free_beds_in_percent": 19.1489361702 + }, + { + "Kreis": "Rosenheim", + "median_free_beds_in_percent": 19.0476190476 + }, + { + "Kreis": "Offenbach", + "median_free_beds_in_percent": 19.0476190476 + }, + { + "Kreis": "Pforzheim, Stadtkreis", + "median_free_beds_in_percent": 19.0476190476 + }, + { + "Kreis": "Siegen-Wittgenstein", + "median_free_beds_in_percent": 18.8811188811 + }, + { + "Kreis": "Krefeld, Stadt", + "median_free_beds_in_percent": 18.8235294118 + }, + { + "Kreis": "Rottal-Inn", + "median_free_beds_in_percent": 18.75 + }, + { + "Kreis": "Altenburger Land", + "median_free_beds_in_percent": 18.75 + }, + { + "Kreis": "Kaiserslautern, kreisfreie Stadt", + "median_free_beds_in_percent": 18.5840707965 + }, + { + "Kreis": "Grafschaft Bentheim", + "median_free_beds_in_percent": 18.5185185185 + }, + { + "Kreis": "Neumarkt i.d.OPf.", + "median_free_beds_in_percent": 18.1818181818 + }, + { + "Kreis": "Breisgau-Hochschwarzwald", + "median_free_beds_in_percent": 18.1818181818 + }, + { + "Kreis": "Mecklenburgische Seenplatte", + "median_free_beds_in_percent": 18.1818181818 + }, + { + "Kreis": "Rhein-Kreis Neuss", + "median_free_beds_in_percent": 18.1818181818 + }, + { + "Kreis": "Ammerland", + "median_free_beds_in_percent": 18.1818181818 + }, + { + "Kreis": "Schwerin", + "median_free_beds_in_percent": 18.0555555556 + }, + { + "Kreis": "Cottbus, Stadt", + "median_free_beds_in_percent": 18.0 + }, + { + "Kreis": "Wuppertal, Stadt", + "median_free_beds_in_percent": 17.6870748299 + }, + { + "Kreis": "Unstrut-Hainich-Kreis", + "median_free_beds_in_percent": 17.6470588235 + }, + { + "Kreis": "Regionalverband Saarbr\u00fccken", + "median_free_beds_in_percent": 17.5257731959 + }, + { + "Kreis": "Osnabr\u00fcck, Stadt", + "median_free_beds_in_percent": 17.5 + }, + { + "Kreis": "Esslingen", + "median_free_beds_in_percent": 17.5 + }, + { + "Kreis": "Hagen, Stadt der FernUniversit\u00e4t", + "median_free_beds_in_percent": 17.4418604651 + }, + { + "Kreis": "G\u00fcnzburg", + "median_free_beds_in_percent": 17.3913043478 + }, + { + "Kreis": "Karlsruhe", + "median_free_beds_in_percent": 17.3076923077 + }, + { + "Kreis": "Ostprignitz-Ruppin", + "median_free_beds_in_percent": 17.2413793103 + }, + { + "Kreis": "Hochtaunuskreis", + "median_free_beds_in_percent": 17.2413793103 + }, + { + "Kreis": "Worms, kreisfreie Stadt", + "median_free_beds_in_percent": 17.2413793103 + }, + { + "Kreis": "S\u00e4chsische Schweiz-Osterzgebirge", + "median_free_beds_in_percent": 17.1428571429 + }, + { + "Kreis": "Offenbach am Main, Stadt", + "median_free_beds_in_percent": 16.9811320755 + }, + { + "Kreis": "Ingolstadt", + "median_free_beds_in_percent": 16.9811320755 + }, + { + "Kreis": "Duisburg, Stadt", + "median_free_beds_in_percent": 16.9811320755 + }, + { + "Kreis": "Regensburg", + "median_free_beds_in_percent": 16.8665458095 + }, + { + "Kreis": "Freiburg im Breisgau, Stadtkreis", + "median_free_beds_in_percent": 16.7664670659 + }, + { + "Kreis": "Rottweil", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "N\u00fcrnberger Land", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Greiz", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Erfurt, Stadt", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Kyffh\u00e4userkreis", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Erlangen-H\u00f6chstadt", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Helmstedt", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Remscheid, Stadt", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "M\u00fchldorf a.Inn", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Bayreuth", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "S\u00f6mmerda", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Schweinfurt", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "L\u00fcchow-Dannenberg", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Schleswig-Flensburg", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Ebersberg", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Goslar", + "median_free_beds_in_percent": 16.6666666667 + }, + { + "Kreis": "Kulmbach", + "median_free_beds_in_percent": 16.2162162162 + }, + { + "Kreis": "Dresden, Stadt", + "median_free_beds_in_percent": 16.0278745645 + }, + { + "Kreis": "Zollernalbkreis", + "median_free_beds_in_percent": 16.0 + }, + { + "Kreis": "Neum\u00fcnster, Stadt", + "median_free_beds_in_percent": 16.0 + }, + { + "Kreis": "Fulda", + "median_free_beds_in_percent": 15.9574468085 + }, + { + "Kreis": "Kempten (Allg\u00e4u)", + "median_free_beds_in_percent": 15.9090909091 + }, + { + "Kreis": "Main-Kinzig-Kreis", + "median_free_beds_in_percent": 15.8536585366 + }, + { + "Kreis": "Pinneberg", + "median_free_beds_in_percent": 15.625 + }, + { + "Kreis": "F\u00fcrth", + "median_free_beds_in_percent": 15.5555555556 + }, + { + "Kreis": "Saarpfalz-Kreis", + "median_free_beds_in_percent": 15.5440414508 + }, + { + "Kreis": "Halle (Saale), Stadt", + "median_free_beds_in_percent": 15.4676258993 + }, + { + "Kreis": "Herne, Stadt", + "median_free_beds_in_percent": 15.3846153846 + }, + { + "Kreis": "Karlsruhe, Stadtkreis", + "median_free_beds_in_percent": 15.3846153846 + }, + { + "Kreis": "Wiesbaden, Landeshauptstadt", + "median_free_beds_in_percent": 15.2380952381 + }, + { + "Kreis": "Traunstein", + "median_free_beds_in_percent": 15.0943396226 + }, + { + "Kreis": "B\u00f6blingen", + "median_free_beds_in_percent": 15.0943396226 + }, + { + "Kreis": "Stuttgart, Stadtkreis", + "median_free_beds_in_percent": 15.0406504065 + }, + { + "Kreis": "Rhein-Sieg-Kreis", + "median_free_beds_in_percent": 14.8148148148 + }, + { + "Kreis": "Bochum, Stadt", + "median_free_beds_in_percent": 14.8148148148 + }, + { + "Kreis": "Marburg-Biedenkopf", + "median_free_beds_in_percent": 14.8148148148 + }, + { + "Kreis": "Bielefeld, Stadt", + "median_free_beds_in_percent": 14.7435897436 + }, + { + "Kreis": "Harburg", + "median_free_beds_in_percent": 14.7058823529 + }, + { + "Kreis": "Neustadt a.d.Aisch-Bad Windsheim", + "median_free_beds_in_percent": 14.7058823529 + }, + { + "Kreis": "Rh\u00f6n-Grabfeld", + "median_free_beds_in_percent": 14.4927536232 + }, + { + "Kreis": "Chemnitz, Stadt", + "median_free_beds_in_percent": 14.364640884 + }, + { + "Kreis": "Frankfurt am Main, Stadt", + "median_free_beds_in_percent": 14.3356643357 + }, + { + "Kreis": "M\u00f6nchengladbach, Stadt", + "median_free_beds_in_percent": 14.2857142857 + }, + { + "Kreis": "Oldenburg", + "median_free_beds_in_percent": 14.2857142857 + }, + { + "Kreis": "Hohenlohekreis", + "median_free_beds_in_percent": 14.2857142857 + }, + { + "Kreis": "Weiden i.d.OPf.", + "median_free_beds_in_percent": 14.2857142857 + }, + { + "Kreis": "Kaufbeuren", + "median_free_beds_in_percent": 14.2857142857 + }, + { + "Kreis": "Kitzingen", + "median_free_beds_in_percent": 14.2857142857 + }, + { + "Kreis": "Kassel, documenta-Stadt", + "median_free_beds_in_percent": 14.0845070423 + }, + { + "Kreis": "Region Hannover", + "median_free_beds_in_percent": 13.9534883721 + }, + { + "Kreis": "Landshut", + "median_free_beds_in_percent": 13.7931034483 + }, + { + "Kreis": "Mannheim, Stadtkreis", + "median_free_beds_in_percent": 13.6363636364 + }, + { + "Kreis": "Berchtesgadener Land", + "median_free_beds_in_percent": 13.6363636364 + }, + { + "Kreis": "Berlin, Stadt", + "median_free_beds_in_percent": 13.4412955466 + }, + { + "Kreis": "Erlangen", + "median_free_beds_in_percent": 13.4228187919 + }, + { + "Kreis": "Unna", + "median_free_beds_in_percent": 13.3928571429 + }, + { + "Kreis": "Weimarer Land", + "median_free_beds_in_percent": 13.3333333333 + }, + { + "Kreis": "Neustadt an der Weinstra\u00dfe, kreisfreie Stadt", + "median_free_beds_in_percent": 13.3333333333 + }, + { + "Kreis": "Minden-L\u00fcbbecke", + "median_free_beds_in_percent": 13.3333333333 + }, + { + "Kreis": "Deggendorf", + "median_free_beds_in_percent": 13.1578947368 + }, + { + "Kreis": "Rhein-Neckar-Kreis", + "median_free_beds_in_percent": 13.1578947368 + }, + { + "Kreis": "Potsdam-Mittelmark", + "median_free_beds_in_percent": 13.0434782609 + }, + { + "Kreis": "Oldenburg (Oldenburg), Stadt", + "median_free_beds_in_percent": 12.962962963 + }, + { + "Kreis": "Mainz, kreisfreie Stadt", + "median_free_beds_in_percent": 12.962962963 + }, + { + "Kreis": "Heidelberg, Stadtkreis", + "median_free_beds_in_percent": 12.7906976744 + }, + { + "Kreis": "Dortmund, Stadt", + "median_free_beds_in_percent": 12.5448028674 + }, + { + "Kreis": "Essen, Stadt", + "median_free_beds_in_percent": 12.5333333333 + }, + { + "Kreis": "Heinsberg", + "median_free_beds_in_percent": 12.5 + }, + { + "Kreis": "Miltenberg", + "median_free_beds_in_percent": 12.5 + }, + { + "Kreis": "Kusel", + "median_free_beds_in_percent": 12.5 + }, + { + "Kreis": "Donau-Ries", + "median_free_beds_in_percent": 12.5 + }, + { + "Kreis": "Wittmund", + "median_free_beds_in_percent": 12.5 + }, + { + "Kreis": "Delmenhorst, Stadt", + "median_free_beds_in_percent": 12.5 + }, + { + "Kreis": "Aschaffenburg", + "median_free_beds_in_percent": 12.3076923077 + }, + { + "Kreis": "Bad Kissingen", + "median_free_beds_in_percent": 12.1951219512 + }, + { + "Kreis": "Lahn-Dill-Kreis", + "median_free_beds_in_percent": 12.0 + }, + { + "Kreis": "Gro\u00df-Gerau", + "median_free_beds_in_percent": 12.0 + }, + { + "Kreis": "Aichach-Friedberg", + "median_free_beds_in_percent": 11.7647058824 + }, + { + "Kreis": "M\u00fclheim an der Ruhr, Stadt", + "median_free_beds_in_percent": 11.7647058824 + }, + { + "Kreis": "Oberspreewald-Lausitz", + "median_free_beds_in_percent": 11.7647058824 + }, + { + "Kreis": "Speyer, kreisfreie Stadt", + "median_free_beds_in_percent": 11.5384615385 + }, + { + "Kreis": "Heilbronn", + "median_free_beds_in_percent": 11.5384615385 + }, + { + "Kreis": "D\u00fcsseldorf, Stadt", + "median_free_beds_in_percent": 11.4478114478 + }, + { + "Kreis": "Jena, Stadt", + "median_free_beds_in_percent": 11.4035087719 + }, + { + "Kreis": "Gie\u00dfen", + "median_free_beds_in_percent": 11.4035087719 + }, + { + "Kreis": "Eichst\u00e4tt", + "median_free_beds_in_percent": 11.320754717 + }, + { + "Kreis": "Schaumburg", + "median_free_beds_in_percent": 11.1111111111 + }, + { + "Kreis": "Barnim", + "median_free_beds_in_percent": 11.1111111111 + }, + { + "Kreis": "M\u00fcnchen, Landeshauptstadt", + "median_free_beds_in_percent": 10.8808290155 + }, + { + "Kreis": "Bremen, Stadt", + "median_free_beds_in_percent": 10.7142857143 + }, + { + "Kreis": "Bad T\u00f6lz-Wolfratshausen", + "median_free_beds_in_percent": 10.7142857143 + }, + { + "Kreis": "Magdeburg, Landeshauptstadt", + "median_free_beds_in_percent": 10.7142857143 + }, + { + "Kreis": "Alt\u00f6tting", + "median_free_beds_in_percent": 10.7142857143 + }, + { + "Kreis": "Erding", + "median_free_beds_in_percent": 10.5263157895 + }, + { + "Kreis": "Uelzen", + "median_free_beds_in_percent": 10.5263157895 + }, + { + "Kreis": "Main-Taunus-Kreis", + "median_free_beds_in_percent": 10.3448275862 + }, + { + "Kreis": "Memmingen", + "median_free_beds_in_percent": 10.0 + }, + { + "Kreis": "Gifhorn", + "median_free_beds_in_percent": 10.0 + }, + { + "Kreis": "F\u00fcrstenfeldbruck", + "median_free_beds_in_percent": 10.0 + }, + { + "Kreis": "Dithmarschen", + "median_free_beds_in_percent": 10.0 + }, + { + "Kreis": "M\u00fcnster, Stadt", + "median_free_beds_in_percent": 9.7014925373 + }, + { + "Kreis": "Salzlandkreis", + "median_free_beds_in_percent": 9.6774193548 + }, + { + "Kreis": "Mainz-Bingen", + "median_free_beds_in_percent": 9.0909090909 + }, + { + "Kreis": "T\u00fcbingen", + "median_free_beds_in_percent": 9.0909090909 + }, + { + "Kreis": "Freising", + "median_free_beds_in_percent": 8.3333333333 + }, + { + "Kreis": "Rastatt", + "median_free_beds_in_percent": 8.3333333333 + }, + { + "Kreis": "St\u00e4dteregion Aachen", + "median_free_beds_in_percent": 8.0701754386 + }, + { + "Kreis": "K\u00f6ln, Stadt", + "median_free_beds_in_percent": 7.9545454545 + }, + { + "Kreis": "Bonn, Stadt", + "median_free_beds_in_percent": 7.4468085106 + }, + { + "Kreis": "Biberach", + "median_free_beds_in_percent": 7.1428571429 + }, + { + "Kreis": "Ludwigsburg", + "median_free_beds_in_percent": 6.9306930693 + }, + { + "Kreis": "Wetteraukreis", + "median_free_beds_in_percent": 6.0606060606 + }, + { + "Kreis": "Lippe", + "median_free_beds_in_percent": 6.0 + }, + { + "Kreis": "Gera, Stadt", + "median_free_beds_in_percent": 5.0 + }, + { + "Kreis": "Darmstadt-Dieburg", + "median_free_beds_in_percent": 4.0 + }, + { + "Kreis": "Odenwaldkreis", + "median_free_beds_in_percent": 3.8461538462 + }, + { + "Kreis": "Dachau", + "median_free_beds_in_percent": 3.8461538462 + }, + { + "Kreis": "Emmendingen", + "median_free_beds_in_percent": 3.2608695652 + } +] \ No newline at end of file diff --git a/docs/intensivstationen.html b/docs/intensivstationen.html index 2f8b834f5cb..a670f4c66ac 100644 --- a/docs/intensivstationen.html +++ b/docs/intensivstationen.html @@ -24,6 +24,9 @@ kreisSelect.addEventListener( 'change', event => onKreisOptionSelected(kreisSelect, intensiveCareCapacitiesChartView, freeBedsChartView)); + displayMedianOfFreeBedsByKreisChart( + document.getElementById('medianOfFreeBedsByKreis'), + document.getElementById('slider')); }); function onKreisOptionSelected(kreisSelect, intensiveCareCapacitiesChartView, freeBedsChartView) { diff --git a/docs/intensivstationen.js b/docs/intensivstationen.js index 11ff6378c84..9e0c20c7a4e 100644 --- a/docs/intensivstationen.js +++ b/docs/intensivstationen.js @@ -44,4 +44,34 @@ function add_median_free_beds_in_percent(dataDicts) { for (const dataDict of dataDicts) { dataDict["median_free_beds_in_percent"] = median_free_beds_in_percent; } -} \ No newline at end of file +} + +function displayMedianOfFreeBedsByKreisChart(canvas, slider) { + fetch(`data/intensivstationen/medianOfFreeBedsByKreisTable.json`) + .then(response => response.json()) + .then(json => _displayMedianOfFreeBedsByKreisChart(canvas, slider, json)); +} + +function _displayMedianOfFreeBedsByKreisChart(canvas, sliderElement, data) { + const medianOfFreeBedsByKreisChartView = new MedianOfFreeBedsByKreisChartView(canvas); + medianOfFreeBedsByKreisChartView.displayChart(data); + createSlider( + sliderElement, + { + min: 0, + max: data.length - 1 + }, + values => medianOfFreeBedsByKreisChartView.setData(data.slice(values[0], values[1] + 1))); +} + +function createSlider(sliderElement, range, onUpdate) { + noUiSlider.create( + sliderElement, + { + start: [range.min, range.max], + connect: true, + range: range, + step: 1, + }); + sliderElement.noUiSlider.on('update', onUpdate); +} diff --git a/src/HowBadIsMyBatch.ipynb b/src/HowBadIsMyBatch.ipynb index 6449d16e875..808fecbf113 100644 --- a/src/HowBadIsMyBatch.ipynb +++ b/src/HowBadIsMyBatch.ipynb @@ -806,14 +806,6 @@ " country = 'Global',\n", " minADRsForLethality = minADRsForLethality)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9c70f2db", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/src/help.txt b/src/help.txt index 93513f7ef22..f2d9e8cf77c 100644 --- a/src/help.txt +++ b/src/help.txt @@ -15,32 +15,12 @@ get VAERS data: - download data (e.g. 2022VAERSData.zip) from https://vaers.hhs.gov/data/datasets.html and save and unzip in VAERS folder FK-FIXME: +- Fcron funktioniert nicht, jobs werden im Nachhinein nicht ausgeführt, verwende Autocron statt Fcron FK-TODO: -- Format des jeweiligen Herstellers berücksichtigen: -039k20a -MOD039K20A -#039K20A -039K20A-MODERNA -039K20A-2A (vielleicht nicht) -039K20A or 039L -Moderna/039K20A -MODERNA 039K20A -MODERNA039K20A -Modena 039k20A -L039K20A -M039K20A -MOD; 039K20A -m0039k20A -u039k20a -6/21 039K20A -2039K20A -013L20A 039K20A#039K20A -#039K -039K20A 12-31- -039K20A & 031M2 -039K20A and 032 -039K20A, 011L20 +- Darstellung als Dashboard, siehe https://covid-karte.de/ oder https://experience.arcgis.com/experience/3a132983ad3c4ab8a28704e9addefaba +- Rot-Gelb-Grün eingefärbte Deutschland-Karte anzeigen wie in https://experience.arcgis.com/experience/3a132983ad3c4ab8a28704e9addefaba +- Alle Charts mit Slidern versehen? man 5 fcrontab diff --git a/src/intensivstationen/Intensivstationen.ipynb b/src/intensivstationen/Intensivstationen.ipynb index 658f6458536..165dc5b427a 100644 --- a/src/intensivstationen/Intensivstationen.ipynb +++ b/src/intensivstationen/Intensivstationen.ipynb @@ -838,6 +838,30 @@ " return BeautifulSoup(html, 'lxml')\n" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "29b0930a", + "metadata": {}, + "outputs": [], + "source": [ + "import unittest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "45072a1d", + "metadata": {}, + "outputs": [], + "source": [ + "class TestHelper:\n", + "\n", + " @staticmethod\n", + " def createDataFrame(index, columns, data, dtypes = {}):\n", + " return pd.DataFrame(index = index, columns = columns, data = data).astype(dtypes)\n" + ] + }, { "cell_type": "code", "execution_count": null, @@ -845,9 +869,6 @@ "metadata": {}, "outputs": [], "source": [ - "import unittest\n", - "\n", - "\n", "class KreisOptionsSetterTest(unittest.TestCase):\n", "\n", " def test_setKreisOptions(self):\n", @@ -856,7 +877,7 @@ "\n", " # When\n", " htmlActual = kreisOptionsSetter.setKreisOptions(\n", - " html = '''\n", + " html='''\n", " \n", " \n", "

Test

\n", @@ -869,7 +890,7 @@ " \n", " \n", " ''',\n", - " options = [\n", + " options=[\n", " '',\n", " '',\n", " ''])\n", @@ -891,6 +912,8 @@ " ''')\n", "\n", "# adapted from https://stackoverflow.com/questions/8006909/pretty-print-assertequal-for-html-strings\n", + "\n", + "\n", "def assertEqualHTML(string1, string2, file1='', file2=''):\n", " u'''\n", " Compare two unicode strings containing HTML.\n", @@ -920,16 +943,6 @@ " raise Exception('Not equal %s %s' % (file1, file2))\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "e80117e5", - "metadata": {}, - "outputs": [], - "source": [ - "unittest.main(argv = [''], verbosity = 2, exit = False)" - ] - }, { "cell_type": "code", "execution_count": null, @@ -1359,6 +1372,7 @@ "outputs": [], "source": [ "import os\n", + "import json\n", "\n", "\n", "class IOUtils:\n", @@ -1389,7 +1403,7 @@ " return timeSeries.groupby('date').agg(**{\n", " 'betten_belegt': pd.NamedAgg(column = 'betten_belegt', aggfunc = 'sum'),\n", " 'betten_frei': pd.NamedAgg(column = 'betten_frei', aggfunc = 'sum'),\n", - " 'Einwohnerzahl': pd.NamedAgg(column = 'Einwohnerzahl', aggfunc = 'sum') \n", + " 'Einwohnerzahl': pd.NamedAgg(column = 'Einwohnerzahl', aggfunc = 'sum')\n", " }).reset_index()" ] }, @@ -1400,9 +1414,6 @@ "metadata": {}, "outputs": [], "source": [ - "import json\n", - "\n", - "\n", "def getAndPersistIntensiveCareBeds(timeSeries, kreis = None):\n", " intensiveCareBeds = getIntensiveCareBeds(timeSeries, kreis)\n", " display(kreis)\n", @@ -5052,6 +5063,96 @@ " getAndPersistIntensiveCareBeds(timeSeries, kreis)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9d4acab", + "metadata": {}, + "outputs": [], + "source": [ + "class MedianOfFreeBedsByKreisTableFactory:\n", + " \n", + " def __init__(self, dataFrame):\n", + " self.dataFrame = dataFrame\n", + "\n", + " def createMedianOfFreeBedsByKreisTable(self):\n", + " self.dataFrame['free_beds_divided_by_all_beds_in_percent'] = self.dataFrame['betten_frei'] / (self.dataFrame['betten_frei'] + self.dataFrame['betten_belegt']) * 100\n", + " aggregated = self.dataFrame.groupby('Kreis').agg(\n", + " median_free_beds_in_percent =\n", + " pd.NamedAgg(\n", + " column = 'free_beds_divided_by_all_beds_in_percent',\n", + " aggfunc = 'median'))\n", + " return aggregated.sort_values(by = 'median_free_beds_in_percent', ascending = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a739d4d1", + "metadata": {}, + "outputs": [], + "source": [ + "from pandas.testing import assert_frame_equal\n", + "import statistics\n", + "\n", + "class MedianOfFreeBedsByKreisTableFactoryTest(unittest.TestCase):\n", + "\n", + " def test_createMedianOfFreeBedsByKreisTable(self):\n", + " # Given\n", + " dataFrame = TestHelper.createDataFrame(\n", + " columns = ['date', 'betten_frei', 'betten_belegt', 'Kreis'],\n", + " data = [ ['2020-04-24', 40, 38, 'Flensburg, Stadt'],\n", + " ['2020-04-24', 42, 36, 'Flensburg, Stadt'],\n", + " ['2020-04-24', 44, 34, 'Flensburg, Stadt'],\n", + " ['2020-04-24', 9, 10, 'Bamberg']],\n", + " index = [\n", + " 0,\n", + " 1,\n", + " 2,\n", + " 3])\n", + " medianOfFreeBedsByKreisTableFactory = MedianOfFreeBedsByKreisTableFactory(dataFrame)\n", + " \n", + " # When\n", + " medianOfFreeBedsByKreisTable = medianOfFreeBedsByKreisTableFactory.createMedianOfFreeBedsByKreisTable()\n", + "\n", + " # Then\n", + " assert_frame_equal(\n", + " medianOfFreeBedsByKreisTable,\n", + " TestHelper.createDataFrame(\n", + " columns = ['median_free_beds_in_percent'],\n", + " data = [ [statistics.median([40/(40 + 38) * 100, 42/(42 + 36) * 100, 44/(44 + 34) * 100])],\n", + " [9/(9 + 10) * 100]],\n", + " index = pd.Index(\n", + " name = 'Kreis',\n", + " data = [\n", + " 'Flensburg, Stadt',\n", + " 'Bamberg'\n", + " ])),\n", + " check_dtype = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "af22cdc5", + "metadata": {}, + "outputs": [], + "source": [ + "unittest.main(argv = [''], verbosity = 2, exit = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f10704f3", + "metadata": {}, + "outputs": [], + "source": [ + "medianOfFreeBedsByKreisTableFactory = MedianOfFreeBedsByKreisTableFactory(timeSeries)\n", + "medianOfFreeBedsByKreisTable = medianOfFreeBedsByKreisTableFactory.createMedianOfFreeBedsByKreisTable()\n", + "medianOfFreeBedsByKreisTable.reset_index().to_json('../../docs/data/intensivstationen/medianOfFreeBedsByKreisTable.json', orient = \"records\")" + ] + }, { "cell_type": "code", "execution_count": null,