From 335f4da4d7cdad1dfe9b30e7298ec6431932c885 Mon Sep 17 00:00:00 2001
From: frankknoll
Date: Sat, 19 Mar 2022 10:02:25 +0100
Subject: [PATCH 01/13] argh!
---
src/HowBadIsMyBatch.ipynb | 8 --------
1 file changed, 8 deletions(-)
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": {
From c2375b4601297eb48f7f7fda76b44b8e5b67302d Mon Sep 17 00:00:00 2001
From: frankknoll
Date: Sat, 19 Mar 2022 15:45:20 +0100
Subject: [PATCH 02/13] adding MedianOfFreeBedsByKreisTableFactoryTest
---
src/help.txt | 27 +---
src/intensivstationen/Intensivstationen.ipynb | 123 +++++++++++++++---
2 files changed, 110 insertions(+), 40 deletions(-)
diff --git a/src/help.txt b/src/help.txt
index 93513f7ef22..c33492f0cb6 100644
--- a/src/help.txt
+++ b/src/help.txt
@@ -17,30 +17,9 @@ get VAERS data:
FK-FIXME:
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
+- Intensivstationen ergänzen durch Tabelle oder Barchart:
+ Kreis => "Median des Anteils freier Betten", absteigend sortiert nach "Median des Anteils freier Betten".
+- Darstellung als Dashboard, siehe https://covid-karte.de/ oder https://experience.arcgis.com/experience/3a132983ad3c4ab8a28704e9addefaba
man 5 fcrontab
diff --git a/src/intensivstationen/Intensivstationen.ipynb b/src/intensivstationen/Intensivstationen.ipynb
index 0bc94d1f52d..a4a9d00b609 100644
--- a/src/intensivstationen/Intensivstationen.ipynb
+++ b/src/intensivstationen/Intensivstationen.ipynb
@@ -336,6 +336,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,
@@ -343,9 +367,6 @@
"metadata": {},
"outputs": [],
"source": [
- "import unittest\n",
- "\n",
- "\n",
"class KreisOptionsSetterTest(unittest.TestCase):\n",
"\n",
" def test_setKreisOptions(self):\n",
@@ -354,7 +375,7 @@
"\n",
" # When\n",
" htmlActual = kreisOptionsSetter.setKreisOptions(\n",
- " html = '''\n",
+ " html='''\n",
" \n",
" \n",
" Test
\n",
@@ -367,7 +388,7 @@
" \n",
" \n",
" ''',\n",
- " options = [\n",
+ " options=[\n",
" '',\n",
" '',\n",
" ''])\n",
@@ -389,6 +410,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",
@@ -418,16 +441,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,
@@ -496,7 +509,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()"
]
},
@@ -561,6 +574,84 @@
" 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,
From 7c5926590afdf8733bb32aa017295bd4e594eade Mon Sep 17 00:00:00 2001
From: frankknoll
Date: Sat, 19 Mar 2022 16:21:00 +0100
Subject: [PATCH 03/13] saving medianOfFreeBedsByKreisTable as json file
---
src/intensivstationen/Intensivstationen.ipynb | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/intensivstationen/Intensivstationen.ipynb b/src/intensivstationen/Intensivstationen.ipynb
index a4a9d00b609..9ec1ee48d4a 100644
--- a/src/intensivstationen/Intensivstationen.ipynb
+++ b/src/intensivstationen/Intensivstationen.ipynb
@@ -479,6 +479,7 @@
"outputs": [],
"source": [
"import os\n",
+ "import json\n",
"\n",
"\n",
"class IOUtils:\n",
@@ -520,9 +521,6 @@
"metadata": {},
"outputs": [],
"source": [
- "import json\n",
- "\n",
- "\n",
"def getAndPersistIntensiveCareBeds(timeSeries, kreis = None):\n",
" intensiveCareBeds = getIntensiveCareBeds(timeSeries, kreis)\n",
" display(kreis)\n",
@@ -652,6 +650,18 @@
"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,
From 4ac6966a8c8aeb2e5aaeff5290acdacc60fc8dbb Mon Sep 17 00:00:00 2001
From: frankknoll
Date: Sat, 19 Mar 2022 17:20:28 +0100
Subject: [PATCH 04/13] displayMedianOfFreeBedsByKreisChart()
---
docs/MedianOfFreeBedsByKreisChartView.js | 82 +
.../medianOfFreeBedsByKreisTable.json | 1538 +++++++++++++++++
docs/intensivstationen.html | 5 +
docs/intensivstationen.js | 9 +-
4 files changed, 1633 insertions(+), 1 deletion(-)
create mode 100644 docs/MedianOfFreeBedsByKreisChartView.js
create mode 100644 docs/data/intensivstationen/medianOfFreeBedsByKreisTable.json
diff --git a/docs/MedianOfFreeBedsByKreisChartView.js b/docs/MedianOfFreeBedsByKreisChartView.js
new file mode 100644
index 00000000000..d062d0bae46
--- /dev/null
+++ b/docs/MedianOfFreeBedsByKreisChartView.js
@@ -0,0 +1,82 @@
+class MedianOfFreeBedsByKreisChartView {
+
+ #canvas;
+ #chart;
+
+ constructor(canvas) {
+ this.#canvas = canvas;
+ }
+
+ displayChart(data) {
+ if (this.#chart != null) {
+ this.#chart.destroy();
+ }
+ this.#chart = new Chart(
+ this.#canvas,
+ {
+ type: 'bar',
+ data: this.#getData(data),
+ options: this.#getOptions()
+ });
+ }
+
+ #getData(data) {
+ return {
+ datasets: [
+ {
+ label: 'Kreis',
+ data: data,
+ parsing: {
+ yAxisKey: 'median_free_beds_in_percent'
+ },
+ backgroundColor: 'rgba(0, 255, 0, 1)'
+ }
+ ]
+ };
+ }
+
+ #getOptions() {
+ return {
+ plugins: {
+ title: {
+ display: true,
+ text: 'some Title'
+ },
+ tooltip: {
+ // FK-TODO: DRY with FreeBedsChartView.js
+ 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;
+ }
+ }
+ }
+ },
+ responsive: true,
+ scales: {
+ y: {
+ min: 0,
+ max: 100,
+ title: {
+ display: true,
+ text: "Median des Anteils freier Betten"
+ },
+ // FK-TODO: DRY with FreeBedsChartView.js
+ ticks: {
+ callback: value => value + "%"
+ }
+ }
+ },
+ parsing: {
+ xAxisKey: 'Kreis'
+ }
+ };
+ }
+}
\ No newline at end of file
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 e15e2d34134..4cbac867965 100644
--- a/docs/intensivstationen.html
+++ b/docs/intensivstationen.html
@@ -13,6 +13,7 @@
+
+
+
@@ -19,6 +25,16 @@
document.addEventListener(
"DOMContentLoaded",
event => {
+ const slider = document.getElementById('slider');
+ noUiSlider.create(slider, {
+ start: [20, 80],
+ connect: true,
+ range: {
+ 'min': 0,
+ 'max': 100
+ }
+ });
+ slider.noUiSlider.on('update', values => console.log(values[0], ' - ', values[1]));
const intensiveCareCapacitiesChartView = new IntensiveCareCapacitiesChartView(document.getElementById("intensiveCareCapacities"));
const freeBedsChartView = new FreeBedsChartView(document.getElementById('freeBeds'));
const kreisSelect = document.querySelector('#kreisSelect');
@@ -460,6 +476,7 @@
+
- Datensatz:
diff --git a/src/help.txt b/src/help.txt
index 196401773d1..1704b8aeea5 100644
--- a/src/help.txt
+++ b/src/help.txt
@@ -15,6 +15,7 @@ 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:
- Intensivstationen ergänzen durch Tabelle oder Barchart:
From ae5701310c7673701802690158284e00d991c661 Mon Sep 17 00:00:00 2001
From: frankknoll
Date: Sun, 20 Mar 2022 17:36:26 +0100
Subject: [PATCH 11/13] adding slider to MedianOfFreeBedsByKreisChartView
---
docs/MedianOfFreeBedsByKreisChartView.js | 5 ++++
docs/intensivstationen.html | 14 +++---------
docs/intensivstationen.js | 29 +++++++++++++++++++++---
src/help.txt | 2 ++
4 files changed, 36 insertions(+), 14 deletions(-)
diff --git a/docs/MedianOfFreeBedsByKreisChartView.js b/docs/MedianOfFreeBedsByKreisChartView.js
index 941b958d952..add365222b4 100644
--- a/docs/MedianOfFreeBedsByKreisChartView.js
+++ b/docs/MedianOfFreeBedsByKreisChartView.js
@@ -21,6 +21,11 @@ class MedianOfFreeBedsByKreisChartView {
});
}
+ setData(data) {
+ this.#chart.config.data.datasets[0].data = data;
+ this.#chart.update();
+ }
+
#getData(data, label) {
return {
datasets: [
diff --git a/docs/intensivstationen.html b/docs/intensivstationen.html
index 632bc4d7805..77cb23508e6 100644
--- a/docs/intensivstationen.html
+++ b/docs/intensivstationen.html
@@ -25,16 +25,6 @@
document.addEventListener(
"DOMContentLoaded",
event => {
- const slider = document.getElementById('slider');
- noUiSlider.create(slider, {
- start: [20, 80],
- connect: true,
- range: {
- 'min': 0,
- 'max': 100
- }
- });
- slider.noUiSlider.on('update', values => console.log(values[0], ' - ', values[1]));
const intensiveCareCapacitiesChartView = new IntensiveCareCapacitiesChartView(document.getElementById("intensiveCareCapacities"));
const freeBedsChartView = new FreeBedsChartView(document.getElementById('freeBeds'));
const kreisSelect = document.querySelector('#kreisSelect');
@@ -42,7 +32,9 @@
kreisSelect.addEventListener(
'change',
event => onKreisOptionSelected(kreisSelect, intensiveCareCapacitiesChartView, freeBedsChartView));
- displayMedianOfFreeBedsByKreisChart(document.getElementById('medianOfFreeBedsByKreis'));
+ displayMedianOfFreeBedsByKreisChart(
+ document.getElementById('medianOfFreeBedsByKreis'),
+ document.getElementById('slider'));
});
function onKreisOptionSelected(kreisSelect, intensiveCareCapacitiesChartView, freeBedsChartView) {
diff --git a/docs/intensivstationen.js b/docs/intensivstationen.js
index 75fcc25ab53..9e0c20c7a4e 100644
--- a/docs/intensivstationen.js
+++ b/docs/intensivstationen.js
@@ -46,9 +46,32 @@ function add_median_free_beds_in_percent(dataDicts) {
}
}
-function displayMedianOfFreeBedsByKreisChart(canvas) {
- const medianOfFreeBedsByKreisChartView = new MedianOfFreeBedsByKreisChartView(canvas);
+function displayMedianOfFreeBedsByKreisChart(canvas, slider) {
fetch(`data/intensivstationen/medianOfFreeBedsByKreisTable.json`)
.then(response => response.json())
- .then(json => medianOfFreeBedsByKreisChartView.displayChart(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/help.txt b/src/help.txt
index 1704b8aeea5..a41b885fbce 100644
--- a/src/help.txt
+++ b/src/help.txt
@@ -21,6 +21,8 @@ FK-TODO:
- Intensivstationen ergänzen durch Tabelle oder Barchart:
Kreis => "Median der Anteile freier Betten", absteigend sortiert nach "Median der Anteile freier Betten".
- 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
From bc6b648898ab2610652b3d43021d393d6e902ef7 Mon Sep 17 00:00:00 2001
From: frankknoll
Date: Sun, 20 Mar 2022 18:25:30 +0100
Subject: [PATCH 12/13] updating TODOs
---
src/help.txt | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/help.txt b/src/help.txt
index a41b885fbce..f2d9e8cf77c 100644
--- a/src/help.txt
+++ b/src/help.txt
@@ -18,11 +18,9 @@ FK-FIXME:
- Fcron funktioniert nicht, jobs werden im Nachhinein nicht ausgeführt, verwende Autocron statt Fcron
FK-TODO:
-- Intensivstationen ergänzen durch Tabelle oder Barchart:
- Kreis => "Median der Anteile freier Betten", absteigend sortiert nach "Median der Anteile freier Betten".
- 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.
+- Alle Charts mit Slidern versehen?
man 5 fcrontab
From 720a94240c74ceb78faadcc795e1833b7be93b51 Mon Sep 17 00:00:00 2001
From: frankknoll
Date: Sun, 20 Mar 2022 18:33:39 +0100
Subject: [PATCH 13/13] updating heading
---
docs/intensivstationen.html | 1 +
1 file changed, 1 insertion(+)
diff --git a/docs/intensivstationen.html b/docs/intensivstationen.html
index 77cb23508e6..5a0062e2203 100644
--- a/docs/intensivstationen.html
+++ b/docs/intensivstationen.html
@@ -466,6 +466,7 @@
+ Median der Anteile freier Betten