feat: Added vaccination target and target statistics
This commit is contained in:
parent
da8a85809c
commit
e15fb52f5b
2 changed files with 48 additions and 3 deletions
|
@ -44,6 +44,18 @@
|
||||||
<label for="second_vaccination_percentage">Zweitimpfungen: <em>{{ '{:.3n}'.format(data_second_vaccination.total_percentage) }} %</em></label>
|
<label for="second_vaccination_percentage">Zweitimpfungen: <em>{{ '{:.3n}'.format(data_second_vaccination.total_percentage) }} %</em></label>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<section>
|
||||||
|
<h1>Aktuelles Impfziel</h1>
|
||||||
|
<p class="data-text">
|
||||||
|
Das Impfziel von EU-Kommission<sup><a href="#footnote-004">4</a></sup> und Bundesregierung ist, bis Ende des Sommers 70 % der Bevölkerung geimpft zu haben.
|
||||||
|
Bis zu diesem Ziel sind noch <em>{{ '{:n}'.format(data_first_vaccination.vaccinations_missing_until_target).replace('.', ' ') }}</em> Erstimpfungen nötig.
|
||||||
|
</p>
|
||||||
|
<p class="data-text">
|
||||||
|
Bis zum Ende des Sommers am <em>{{ target_date_for_herd_immunity_str }}</em> bleiben noch <em>{{ days_until_target }}</em> Tage<sup><a href="#footnote-005">5</a></sup>.
|
||||||
|
Um das Ziel pünktlich zu erreichen, müssten in dieser Zeit jeden Tag durchschnittlich <em>{{ '{:n}'.format(data_first_vaccination.vaccination_rate_needed_for_target).replace('.', ' ') }}</em> Erstimpfungen vorgenommen werden.
|
||||||
|
Die bisherige durchschnittliche Erstimpfrate liegt bei <em>{{ '{:.3n}'.format(data_first_vaccination.vaccination_rate_needed_for_target_percentage ) }} %</em> dieser Rate.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
<!--<section>
|
<!--<section>
|
||||||
<h1>Details</h1>
|
<h1>Details</h1>
|
||||||
<figure>
|
<figure>
|
||||||
|
@ -56,7 +68,7 @@
|
||||||
Impfungen<br />
|
Impfungen<br />
|
||||||
gesamt
|
gesamt
|
||||||
</th>
|
</th>
|
||||||
<th colspan="8">Impfung wegen<sup><a href="#footnote-004">4</a></sup></th>
|
<th colspan="8">Impfung wegen<sup><a href="#footnote-006">6</a></sup></th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="2">Alter</th>
|
<th colspan="2">Alter</th>
|
||||||
|
@ -283,7 +295,21 @@
|
||||||
<li><a name="footnote-002">Bevölkerungsstand vom 31. Dezember 2019: {{ einwohner_deutschland }}.</a></li>
|
<li><a name="footnote-002">Bevölkerungsstand vom 31. Dezember 2019: {{ einwohner_deutschland }}.</a></li>
|
||||||
<li><a name="footnote-003">{{ herd_immunity }} % ist der Wert, bei dem aktuell von einer Herdenimmunität ausgegangen wird.</a></li>
|
<li><a name="footnote-003">{{ herd_immunity }} % ist der Wert, bei dem aktuell von einer Herdenimmunität ausgegangen wird.</a></li>
|
||||||
<!--<li><a name="footnote-004">Die täglichen Impfraten unterliegen starken Schwankungen und sind daher wenig aussagekräftig.</a></li>-->
|
<!--<li><a name="footnote-004">Die täglichen Impfraten unterliegen starken Schwankungen und sind daher wenig aussagekräftig.</a></li>-->
|
||||||
<li><a name="footnote-004">Nicht alle Länder veröffentlichen alle in der Aufschlüsselung aufgelisteten Daten.</a></li>
|
<li><a name="footnote-004">Quellen:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.tagesschau.de/ausland/europa/ursula-von-der-leyen-zu-corona-impfstoffen-101.html">Tagesschau, 2021-02-10</a>: Von der Leyen (EU-Kommission): „Sie bekräftigte das Ziel, bis ‚zum Ende des Sommers 70 Prozent der erwachsenen Bevölkerung in Europa‘ zu impfen.“
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.tagesschau.de/inland/impfplan-gesundheitsministerium-spahn-corona-101.html">Tagesschau, 2021-02-10</a>: Spahn (Bundesgesundheitsministerium): „Die Bundesregierung hält es aber weiter für möglich, bis Ende des Sommers allen ein Impfangebot zu machen.“
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.tagesschau.de/inland/impfgipfel-107.html">Tagesschau, 2021-02-01</a>: Merkel (Bundesregierung): „Ein Impfangebot für alle bis Ende des Sommers - das sei auch mit den drei bislang zugelassenen Impfstoffen möglich, so Kanzlerin Merkel.“
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
Teilweise (wie auch in einigen dieser Quellen) wird von 70 % der <em>erwachsenen</em> Bevölkerung gesprochen, zur Vereinfachung wird hier dennoch die Gesamtbevölkerung zugrunde gelegt.</a></li>
|
||||||
|
<li><a name="footnote-005">Von den verbleibenden Tagen wurden 21 Tage für die Zeit zwischen Erst- und Zweitimpfung abgezogen.</a></li>
|
||||||
|
<li><a name="footnote-006">Nicht alle Länder veröffentlichen alle in der Aufschlüsselung aufgelisteten Daten.</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
</section>
|
</section>
|
||||||
</body>
|
</body>
|
||||||
|
|
21
plot.py
21
plot.py
|
@ -23,11 +23,19 @@ data_folder = 'data/'
|
||||||
einwohner_deutschland = 83190556
|
einwohner_deutschland = 83190556
|
||||||
herd_immunity = 0.7
|
herd_immunity = 0.7
|
||||||
|
|
||||||
|
|
||||||
today = datetime.date.today()
|
today = datetime.date.today()
|
||||||
print_today = today.isoformat()
|
print_today = today.isoformat()
|
||||||
|
|
||||||
filename_now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
|
filename_now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# https://www.tagesschau.de/ausland/europa/ursula-von-der-leyen-zu-corona-impfstoffen-101.html
|
||||||
|
target_date_for_herd_immunity = datetime.date(2021, 9, 22)
|
||||||
|
days_until_target = (target_date_for_herd_immunity - today).days - 21
|
||||||
|
|
||||||
|
|
||||||
# DIN A4 Plots
|
# DIN A4 Plots
|
||||||
plt.rcParams["figure.figsize"] = [11.69, 8.27]
|
plt.rcParams["figure.figsize"] = [11.69, 8.27]
|
||||||
|
|
||||||
|
@ -100,6 +108,11 @@ def calculate_vaccination_data(data):
|
||||||
|
|
||||||
mean_vaccination_rates_daily = np.round(cumulative / range(1, len(cumulative) + 1))
|
mean_vaccination_rates_daily = np.round(cumulative / range(1, len(cumulative) + 1))
|
||||||
|
|
||||||
|
|
||||||
|
vaccinations_missing_until_target = einwohner_deutschland * 0.7 - total
|
||||||
|
vaccination_rate_needed_for_target = vaccinations_missing_until_target / days_until_target
|
||||||
|
vaccination_rate_needed_for_target_percentage = mean_all_time / vaccination_rate_needed_for_target * 100
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'daily': data,
|
'daily': data,
|
||||||
'cumulative': cumulative,
|
'cumulative': cumulative,
|
||||||
|
@ -114,7 +127,10 @@ def calculate_vaccination_data(data):
|
||||||
'extrapolation_mean_all_time': extrapolation_mean_all_time,
|
'extrapolation_mean_all_time': extrapolation_mean_all_time,
|
||||||
'extrapolation_last_rate': extrapolation_last_rate,
|
'extrapolation_last_rate': extrapolation_last_rate,
|
||||||
'extrapolation_mean_seven_days': extrapolation_mean_seven_days,
|
'extrapolation_mean_seven_days': extrapolation_mean_seven_days,
|
||||||
'mean_vaccination_rates_daily': mean_vaccination_rates_daily
|
'mean_vaccination_rates_daily': mean_vaccination_rates_daily,
|
||||||
|
'vaccinations_missing_until_target': int(np.floor(vaccinations_missing_until_target)),
|
||||||
|
'vaccination_rate_needed_for_target': int(np.floor(vaccination_rate_needed_for_target)),
|
||||||
|
'vaccination_rate_needed_for_target_percentage': vaccination_rate_needed_for_target_percentage
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -638,6 +654,9 @@ def render_dashboard():
|
||||||
filename_stand = filename_stand,
|
filename_stand = filename_stand,
|
||||||
einwohner_deutschland = '{:n}'.format(einwohner_deutschland).replace('.', ' '),
|
einwohner_deutschland = '{:n}'.format(einwohner_deutschland).replace('.', ' '),
|
||||||
herd_immunity = '{:n}'.format(int(herd_immunity * 100)),
|
herd_immunity = '{:n}'.format(int(herd_immunity * 100)),
|
||||||
|
target_date_for_herd_immunity = target_date_for_herd_immunity,
|
||||||
|
target_date_for_herd_immunity_str = target_date_for_herd_immunity.strftime('%d. %B %Y'),
|
||||||
|
days_until_target = days_until_target,
|
||||||
data_first_vaccination = data_first_vaccination,
|
data_first_vaccination = data_first_vaccination,
|
||||||
data_second_vaccination = data_second_vaccination,
|
data_second_vaccination = data_second_vaccination,
|
||||||
#details_per_land = dict(sorted(details_per_land_formatted.items(), key=lambda item: item[0])),
|
#details_per_land = dict(sorted(details_per_land_formatted.items(), key=lambda item: item[0])),
|
||||||
|
|
Loading…
Reference in a new issue