| Datum der Quelldatei:01.05.2023 |
Deutschland
Frankreich
Großbritanien
EU
Australien
USA
Nordamerika
Weltweit
Alle Länder
|
A Zusammenfassung B Verlauf Tabelle Diagramme letzte 4 Wochen letzte 8 Wochen letzte 12 Monate Gesamt Wochensummen Monatssummen C Verteilung Diagramme Tabelle D Heatmaps Trend Infektionen Todesfälle E Dokumentation Dokumentation |
Die DatenquelleDie Rohdaten stammen von Die Datenbank kann unter Der Quelltextincludes/header.phplayout.css verteilung_tabellen.js index.php zusammenfassung.php verteilung_tabellen.php verteilung_diagramme.php includes/zeitreihe_aktive_infektionen.php includes/zeitreihe_differential.php includes/zeitreihe_gesamtinfektionen.php includes/zeitreihe_impfungen.php includes/zeitreihe_neuinfektionen_gesamt.php zeitreihen_tabellen.php zeitreihen_diagramme.php zeitreihen_diagramme_4wochen.php zeitreihen_diagramme_8wochen.php zeitreihen_diagramme_wochensumme.php zeitreihen_diagramme_monatssumme.php zeitreihen_diagramme_vergleich.php heatmap_wo2.php includes/download.php includes/datenbank_erweitern.php includes/datenbank_reduzieren.php dokumentation.php includes/footer.php includes/header.php<?php
#Schalter für Debugging
$debug = False;
# interne Seitenverweise mit Cross-Site-Scripting Protection
$seitenverweis = htmlspecialchars(substr($_GET['vseite'], 0, 40), ENT_QUOTES );
$laenderverweis = htmlspecialchars(substr($_GET['vland'], 0, 10), ENT_QUOTES );
$vis = htmlspecialchars(substr($_GET['vvis'], 0, 1), ENT_QUOTES );
if ( $seitenverweis == "" ){ $seitenverweis = "zusammenfassung"; }
if ( $laenderverweis == "" ){ $laenderverweis = "DEU"; }
if ( $vis == "" ){ $vis = 1; }
# Deutsche Zeichentabelle verwenden (z.B. für Sortierungen)
setlocale (LC_COLLATE, "deu_deu", "de_DE" );
$faktor_tote = 25;
if ($debug) { $memory["start"] = round(memory_get_usage() / 1024, 0) ; }
# Datenbank corona_daten.csv einlesen
$input = file("corona_daten.csv");
if ($debug) { $memory["input"] = round(memory_get_usage() / 1024, 0) ; }
$input2 = file("corona_daten_woche.csv");
if ($debug) { $memory["input2"] = round(memory_get_usage() / 1024, 0) - $memory["input"] ; }
# Wenn der Wochentag 1 ist (Montag)
function filter_montag(){
global $land_akt;
global $input;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input[$x]);
# Wenn die Iso-Codes übereinstimmen und der Tag ein Montag ist
if ( date("N", strtotime($array[3])) == "1" &&
($array[0] == $land_akt) ){
$n_array[] = $array;
}
}
return $n_array;
}
# Wenn der Wochentag 1 ist (Montag)
function filter_montag_region(){
global $land_akt;
global $input;
global $testregion;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input[$x]);
# Wenn die Iso-Codes übereinstimmen und der Tag ein Montag ist
if ( date("N", strtotime($array[3])) == "1" &&
($array[1] == $testregion) ){
$n_array[] = $array;
}
}
return $n_array;
}
# filtert auf das aktuelle Land (als ISO-Code)
function filter_land(){
global $land_akt;
global $input;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input[$x]);
# wenn die ISO-Codes übereinstimmen
if ($array[0] == $land_akt){
# Zeile an n_array anhängen
$n_array[] = $array;
}
}
return $n_array;
}
# filtert auf das aktuelle Land (als ISO-Code)
function filter_land_wo(){
global $land_akt;
global $input2;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input2); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input2[$x]);
# wenn die ISO-Codes übereinstimmen
if ($array[0] == $land_akt){
# Zeile an n_array anhängen
$n_array[] = $array;
}
}
return $n_array;
}
function filter_region(){
global $testregion;
global $input;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input[$x]);
if ($array[1] == $testregion){
$n_array[] = $array;
}
}
return $n_array;
}
function filter_region_wo(){
global $testregion;
global $input2;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input2); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input2[$x]);
if ($array[1] == $testregion){
$n_array[] = $array;
}
}
return $n_array;
}
# testet auf das heutige Datum
function filter_datum(){
global $datumakt;
global $input;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input[$x]);
if ($array[3] == $datumakt){
$n_array[] = $array;
}
}
return $n_array;
}
# filtert die Datensätze der letzten X Tage (vor aktuellem Datum der DB)
function filter_datum_land($tage){
global $offset_datum;
global $land_akt;
global $input;
global $datumakt;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input[$x]);
if ( strtotime($array[3]) > strtotime($datumakt . " - " . $tage . " Days") &&
strtotime($array[3]) < strtotime($datumakt) &&
( $array[0] == $land_akt ) ){
$n_array[] = $array;
}
}
return $n_array;
}
function werte_berechnen($data){
global $faelle_tmp;
global $tote_tmp;
$diff_faelle = round($data[42] - $faelle_tmp, 3);
$diff_tote = round($data[48] - $tote_tmp, 3);
$diff_faelle_rel = round($diff_faelle / $faelle_tmp * 100, 3);
$diff_tote_rel = round($diff_tote / $tote_tmp * 100, 3);
$faelle_tmp = $data[42];
$tote_tmp = $data[48];
$ausgabe = array ($data[3],$diff_faelle,$diff_tote,$diff_faelle_rel,$diff_tote_rel,$data[9]);
return $ausgabe;
}
function fehler_auf_null($data){
if (is_nan($data[3])) { $data[3] = 0;}
if (is_nan($data[4])) { $data[4] = 0;}
if (is_infinite($data[3])) { $data[3] = 0;}
if (is_infinite($data[4])) { $data[4] = 0;}
return array ($data[0],
$data[1],
$data[2],
$data[3],
$data[4],
$data[5]);
}
# wenn der Tag des Monats gleich "1" ist (1. Tag des Monats)
function filter_monat(){
global $land_akt;
global $input;
$n_array = [];
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input[$x]);
if ( ( date("j", strtotime($array[3])) == "28" ) &&
($array[0] == $land_akt) ){
$n_array[] = $array;
}
}
return $n_array;
}
function Linie($x1,$y1,$x2,$y2,$class,$style){
if ( $style != "" ) { $style = " style='$style'"; }
if ( $class != "" ) { $class = " class='$class'"; }
$ausgabetext = "<line x1='$x1' y1='$y1' x2='$x2' y2='$y2' $class$style/>\n";
return $ausgabetext;
}
function Text($x,$y,$class,$style,$inhalt,$transform){
if ( $style != "" ) { $style = " style='$style'"; }
if ( $class != "" ) { $class = " class='$class'"; }
if ( $transform != "" ) { $transform = " transform='$transform'"; }
$ausgabetext = "<text x='$x' y='$y' $class$style$transform>$inhalt</text>\n";
return $ausgabetext;
}
# Auf aktuelle Daten prüfen
# include ("./includes/download.php");
if ($debug) { $memory["nach_dl"] = round(memory_get_usage() / 1024, 0) ; }
if (date("H") < 21){
$datumakt = date("Y-m-d", strtotime("-2 Days"));
#$datumakt_gestern = date("Y-m-d", strtotime("-3 Days"));
$offset_datum = 0;
} else {
$datumakt = date("Y-m-d", strtotime("-1 Days"));
#$datumakt_gestern = date("Y-m-d", strtotime("-2 Days"));
$offset_datum = 1;
#$datumakt = date_create("2023-04-01");
}
$datumakt = date("Y-m-d", strtotime("01.05.2023"));
$date1=date_create("2020-01-01");
$date2=date_create($datumakt);
$diff=date_diff($date1,$date2);
$tage=$diff->format("%a");
if ($debug) { $memory["timezone"] = date_default_timezone_get() ; }
// Länder-Übersetzungs-Arrays
# Tabelle mit Ländernamen und ISO-Codes einlesen
$input_laender = file("laender_iso_en_de_region.csv");
# Liste in ein Array einlesen
for ( $x = 0 ; $x <= count($input_laender); $x++ ){ $array_laender[] = explode(",", $input_laender[$x] ); }
# Assoziative Arrays erzeugen
foreach ($array_laender as $land) { $liste_laender_en_de["$land[1]"] = $land[2]; } # Englisch -> Deutsch
foreach ($array_laender as $land) { $liste_laender_iso_de["$land[0]"] = $land[2]; } # ISO -> Deutsch
foreach ($array_laender as $land) { $liste_laender_iso_en["$land[0]"] = $land[1]; } # ISO -> Englisch
# Speicher freigeben
unset($input_laender);
if ($debug) { $memory["laender"] = round(memory_get_usage() / 1024, 0) - $memory["nach_dl"]; }
if ($debug) { $memory["gesamt"] = round(memory_get_usage() / 1024, 0); }
# Kopffelder für Spaltenindex nutzen
$kopfzeile = $input[0];
$t1 = 0;
foreach (str_getcsv($kopfzeile) as $kopffeld) {
$liste_kopffelder[$kopffeld] = $t1;
$t1++;
}
?>
<!--<!DOCTYPE html> stört SVG->Text-Size -->
<html lang="de-DE">
<head>
<title>Zahlen und Diagramme zur Corona-Pandemie</title>
<meta charset='UTF-8'>
<link rel='stylesheet' href='layout.css' type='text/css'>
<script type = "text/javascript" src="verteilung_tabellen.js"></script>
</head>
<body style="background: #D3FFFF;">
<center><h1><a href="index.php">Zahlen und Diagramme zur Corona-Pandemie</a></h1></center>
<!-- Das Grundgerüst -->
<table border='0' width='1600'>
<tr>
<td class='Q1' width='180' height='60'>Datum der <a href="https://ourworldindata.org/coronavirus-data" target="_blank">Quelldatei</a>:</br><?=date("d.m.Y",strtotime($datumakt))?></td>
<td class='Q2'>
<a class="menu_top" href="<?=$seitenverweis?>.php?vland=DEU&vseite=<?=$seitenverweis?>&vvis=<?=$vis?>">Deutschland</a>
<a class="menu_top" href="<?=$seitenverweis?>.php?vland=FRA&vseite=<?=$seitenverweis?>&vvis=<?=$vis?>">Frankreich</a>
<a class="menu_top" href="<?=$seitenverweis?>.php?vland=GBR&vseite=<?=$seitenverweis?>&vvis=<?=$vis?>">Großbritanien</a>
<a class="menu_top" href="<?=$seitenverweis?>.php?vland=OWID_EUN&vseite=<?=$seitenverweis?>&vvis=<?=$vis?>">EU</a>
<a class="menu_top" href="<?=$seitenverweis?>.php?vland=AUS&vseite=<?=$seitenverweis?>&vvis=<?=$vis?>">Australien</a>
<a class="menu_top" href="<?=$seitenverweis?>.php?vland=USA&vseite=<?=$seitenverweis?>&vvis=<?=$vis?>">USA</a>
<a class="menu_top" href="<?=$seitenverweis?>.php?vland=OWID_NAM&vseite=<?=$seitenverweis?>&vvis=<?=$vis?>">Nordamerika</a>
<a class="menu_top" href="<?=$seitenverweis?>.php?vland=OWID_WRL&vseite=<?=$seitenverweis?>&vvis=<?=$vis?>">Weltweit</a>
<span width='100px' onclick='document.getElementById("menu_laender").style.visibility="visible";' class='link'>Alle Länder</span>
<div id='mnu'>
<div id='menu_laender' onmouseover='document.getElementById("menu_laender").style.visibility="visible";' onmouseout='document.getElementById("menu_laender").style.visibility="hidden";'>
<?
asort($liste_laender_iso_de, SORT_LOCALE_STRING);
foreach ($liste_laender_iso_de as $label1 => $label2) {
if ($label2 != "") {
echo "<a class='menu_eintraege' href='" . $seitenverweis . ".php?vland=" . $label1 . "&vseite=" . $seitenverweis . "&vvis=" . $vis . "'>" . $label2 . "</a>\n";
}
}
?>
</div>
</div>
</td>
</tr>
<tr>
<td class='Q3'><br></br>
<br><a class='menu_left' href="zusammenfassung.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung">A Zusammenfassung</a></br>
B Verlauf<br>
<a class='menu_left' href="zeitreihen_tabellen.php?vland=<?=$laenderverweis?>&vseite=zeitreihen_tabellen">Tabelle</a>
Diagramme<br>
<a class='menu_left' href="zeitreihen_diagramme_4wochen.php?vland=<?=$laenderverweis?>&vseite=zeitreihen_diagramme_4wochen">letzte 4 Wochen</a>
<a class='menu_left' href="zeitreihen_diagramme_8wochen.php?vland=<?=$laenderverweis?>&vseite=zeitreihen_diagramme_8wochen">letzte 8 Wochen</a>
<a class='menu_left' href="zeitreihen_diagramme.php?vland=<?=$laenderverweis?>&vseite=zeitreihen_diagramme&vvis=2">letzte 12 Monate</a>
<a class='menu_left' href="zeitreihen_diagramme.php?vland=<?=$laenderverweis?>&vseite=zeitreihen_diagramme&vvis=1">Gesamt</a>
<a class='menu_left' href="zeitreihen_diagramme_wochensumme.php?vland=<?=$laenderverweis?>&vseite=zeitreihen_diagramme_wochensumme">Wochensummen</a>
<a class='menu_left' href="zeitreihen_diagramme_monatssumme.php?vland=<?=$laenderverweis?>&vseite=zeitreihen_diagramme_monatssumme">Monatssummen</a>
<!--
<br>
Länder-Vergleich<br>
<a class='menu_left' href="zeitreihen_diagramme_vergleich.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung&vvis=0">Auswahl</a>
<a class='menu_left' href="zeitreihen_diagramme_vergleich.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung&vvis=2">Europa</a>
<a class='menu_left' href="zeitreihen_diagramme_vergleich.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung&vvis=3">Nordamerika</a>
<a class='menu_left' href="zeitreihen_diagramme_vergleich.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung&vvis=4">Afrika</a>
<a class='menu_left' href="zeitreihen_diagramme_vergleich.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung&vvis=5">Asien</a>
<a class='menu_left' href="zeitreihen_diagramme_vergleich.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung&vvis=6">Ozeanien</a>
<a class='menu_left' href="zeitreihen_diagramme_vergleich.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung&vvis=7">Süd Amerika</a>
<br>
<a class='menu_left' href="zeitreihen_diagramme_vergleich.php?vland=<?=$laenderverweis?>&vseite=zusammenfassung&vvis=1">Kontinente-Vergleich</a>
-->
<br>C Verteilung
<a class="menu_left" href="verteilung_diagramme.php?vland=<?=$laenderverweis?>&vseite=verteilung_diagramme">Diagramme</a>
<a class="menu_left" href="verteilung_tabellen.php?vland=<?=$laenderverweis?>&vseite=verteilung_tabellen">Tabelle</a>
<br>D Heatmaps
<a class="menu_left" href="heatmap_wo2.php?vland=<?=$laenderverweis?>&vseite=heatmap_wo2&vvis=4">Trend</a>
<a class="menu_left" href="heatmap_wo2.php?vland=<?=$laenderverweis?>&vseite=heatmap_wo2&vvis=1">Infektionen</a>
<a class="menu_left" href="heatmap_wo2.php?vland=<?=$laenderverweis?>&vseite=heatmap_wo2&vvis=2">Todesfälle</a>
<!-- <a class="menu_left" href="heatmap3.php?vland=<?=$laenderverweis?>&vseite=heatmap3">Trend + Infektionen</a>
<a class="menu_left" href="heatmap4.php?vland=<?=$laenderverweis?>&vseite=heatmap&vvis=4">Trend kurz</a> -->
</br>E Dokumentation
<a class='menu_left' href="dokumentation.php">Dokumentation</a>
</td>
<td class='inhalt'>
<!-- Der Inhaltsteil -->
layout.cssth {
position: sticky;
top: 0;
background-color: #D3FFFF;
text-align:center;
}
body {
font-family: 'Share Tech Mono';
background-color: #D3FFFF;
}
.hmt {
font-size:8px;
color:#FFFFFF;
}
pre {
text-align: left;
}
[class*="tote"] {
color: #DD0000;
/* background-color: #FFDDDDEE; */
background-image: linear-gradient(45deg, #FFC05A, #FFDDDDEE);
}
[class*="faelle"] {
color: #000088;
background-image: linear-gradient(45deg, #7799FFEE, #D3FFFFEE);
}
[class*="tab"] {
padding: 8px;
}
[class*="impf"] {
color: #00AA00;
background-image: linear-gradient(45deg, #CCFFDDEE, #D3FFFFEE);
}
[class*="bev"] {
color: #000000;
background-image: linear-gradient(45deg, #CCFFDDEE, #D3FFFFEE);
}
td {
text-align:right;
}
h1 {}
h2 {
font-size: 20;
}
h3 {
font-size: 16;
}
a {
text-decoration: none;
border: 0px solid black;
padding: 4px;
}
a:hover {
background: #222222;
color: #ffffff;
}
.inhalt {
text-align: left;
padding: 20px;
}
.Q1 {
font-size: 80%;
}
.Q2 {
vertical-align:middle;
text-align:left;
}
.Q3 {
vertical-align:top;
}
.menu_left {
display: block;
}
#menu_laender {
column-count:5;
/* width:800px; */
position:absolute;
background-color: #D3FFFF;
visibility:hidden;
border:3px solid green;
border-radius:20px;
z-index:1;
margin:5px;
padding:10px;
transition-duration: 0.4s;
}
a.menu_eintraege {
color:#FFFFFF;
text-align:center;
font-size:90%;
font-weight:bold;
display:block;
width:160px;
padding:6px;
border: 2px solid #D3FFFF;
outline: 1px solid #000000;
border-radius:5px;
background:#000077;
margin:2px 0 0 0;
}
a.menu_eintraege:hover {
border: 2px solid red;
color: yellow;
transition-duration: 0.3s;
}
a.menu_eintraege:active {
border: 2px solid red;
color: yellow;
background:#000000;
}
/* Zusammenfassung.php */
#zusammenfassung th, #zusammenfassung td {
text-align:center;
padding: 12px;
border-radius:10px;
border-collapse: separate;
border-spacing: 15px;
/* box-shadow: 2px 2px 3px 2px #000000; */
}
.klein {
font-size: 80%;
}
.gross {
font-size: 120%;
}
/* Heatmap */
.h_d {
writing-mode: vertical-rl;
text-orientation: mixed;
}
.tt_neutr {
background-color: #FFFF00EE;
font-size: 20%;
}
.tt_pos {
background-color: #FF0000EE;
font-size: 20%;
}
.tt_pos2 {
background-color: #990000EE;
font-size: 20%;
}
.tt_neg {
background-color: #00FF00EE;
font-size: 20%;
}
.tt_neg2 {
background-color: #009900EE;
font-size: 20%;
}
/* Zeitreihen_Tabellen, Verteilung_Tabellen */
/* es wird jede zweite (gerade) Zeile eingefärbt, wenn sie sich in einem tbody-Element befindet */
tbody > tr.zeilen:nth-child(odd) {
background-color: #000000;
}
/*Die Sortierknöpfe*/
th > span {
font-size: 150%;
}
th > span:hover {
color: white;
background-color: black;
}
.link{
padding: 4px;
}
.link:hover{
color: white;
background-color: black;
}
/*markierte Zeile, die hervorgehoben werden soll*/
[class*="xxx"] {
color: #000000;
text-align: right;
font-weight: bold;
}
.tab_land {
background-color: #D3FFFFEE;
}
.tab_land_xxx {
background-color: #FFAAAAEE;
}
.tab_datum {
background-color: #D3FFFFEE;
}
[class*="trend"] {
text-align:center;
color: #000000;
font-weight: bold;
}
.tab_trend_pos {
background-color: #FF0000EE;
}
.tab_trend_neg {
background-color: #00FF00EE;
}
.tab_trend_neutr {
background-color: #FFFF00EE;
}
.datum3 {
font-size: 60%;
}
/* Zeitreihen_Diagramme */
text {
fill:#000000;
}
line {
stroke:#000000;
}
#legende1 text {
font-size: 14px;
}
#legende1 .gd {
font-size: 75%;
stroke-width:3;
}
#legende2 text {
font-size: 14px;
}
#legende2 .legende, #legende1 .legende {
font-size: 16px;
}
.l_f {
stroke:#6666FF;
stroke-width:1;
}
.l_t {
stroke:#FF6666;
stroke-width:1;
}
.l_i {
stroke:#22AA22;
stroke-width:1;
}
.l_gen{
stroke:#FF6600;
}
.l_gf {
stroke:#000088;
stroke-width:3;
}
.l_gt {
stroke:#770000;
stroke-width:3;
}
.l_gi {
stroke:#007700;
stroke-width:3;
}
verteilung_tabellen.jsfunction tabelle_sortieren_a(n,m){
var tabelle, reihen, getauscht, i, x, y, tauschen, k;
//k = m + 1;
if ( m == 2 ) {
k = 3;
} else {
k = 1;
}
tabelle = document.getElementById("verteilung" + m);
getauscht = true;
while (getauscht) {
getauscht = false;
reihen = tabelle.rows;
for (i = 2; i < (reihen.length - k); i++) { //es ist wichtig bei 2 zu starten!! ( header hat zwei zeilen!)
tauschen = false;
if ( n == 0 ) {
x = reihen[i].getElementsByTagName("a")[n];
y = reihen[i + 1].getElementsByTagName("a")[n];
x = x.innerHTML.toLowerCase();
y = y.innerHTML.toLowerCase();
}
if ( n == 1 ) {
x = reihen[i].getElementsByTagName("td")[n];
y = reihen[i + 1].getElementsByTagName("td")[n];
x = x.innerHTML.toLowerCase();
y = y.innerHTML.toLowerCase();
}
if ( n > 1 ) {
x = reihen[i].getElementsByTagName("td")[n];
y = reihen[i + 1].getElementsByTagName("td")[n];
x = x.innerHTML.toLowerCase();
y = y.innerHTML.toLowerCase();
//Punkte entfernen, damit die Werte als Zahlen behandelt werden
x = x.replace(".",""); x = x.replace(".",""); x = x.replace(".","");
y = y.replace(".",""); y = y.replace(".",""); y = y.replace(".","");
//Komma durch Punkte ersetzen, damit Nachkommastellen richtig erkannt werden
x = x.replace(",",".");
y = y.replace(",",".");
x = parseFloat(x);
y = parseFloat(y);
}
if (x > y) {
tauschen = true;
break;
}
}
if (tauschen) {
reihen[i].parentNode.insertBefore(reihen[i + 1], reihen[i]);
getauscht = true;
}
}
}
function tabelle_sortieren_d(n,m){
var tabelle, reihen, getauscht, i, x, y, tauschen, k;
if ( m == 2 ) {
k = 3;
} else {
k = 1;
}
tabelle = document.getElementById("verteilung" + m);
getauscht = true;
while (getauscht) {
getauscht = false;
reihen = tabelle.rows;
for (i = 2; i < (reihen.length - k); i++) { //es ist wichtig bei 2 zu starten!! ( header hat zwei zeilen!)
tauschen = false;
if ( n == 0 ) {
x = reihen[i].getElementsByTagName("a")[n];
y = reihen[i + 1].getElementsByTagName("a")[n];
x = x.innerHTML.toLowerCase();
y = y.innerHTML.toLowerCase();
}
if ( n == 1 ) {
x = reihen[i].getElementsByTagName("td")[n];
y = reihen[i + 1].getElementsByTagName("td")[n];
x = x.innerHTML.toLowerCase();
y = y.innerHTML.toLowerCase();
}
if ( n > 1 ) {
x = reihen[i].getElementsByTagName("td")[n];
y = reihen[i + 1].getElementsByTagName("td")[n];
x = x.innerHTML.toLowerCase();
y = y.innerHTML.toLowerCase();
x = x.replace(".",""); x = x.replace(".",""); x = x.replace(".","");
y = y.replace(".",""); y = y.replace(".",""); y = y.replace(".","");
x = x.replace(",",".");
y = y.replace(",",".");
x = parseFloat(x);
y = parseFloat(y);
}
if (x < y) {
tauschen = true;
break;
}
}
if (tauschen) {
reihen[i].parentNode.insertBefore(reihen[i + 1], reihen[i]);
getauscht = true;
}
}
}
index.php<?php
// CC-BY Andreas Schult
// 100 % handcoded
# Kopfteil einbinden
include ("./includes/header.php");
?>
<!-- Begrüßungstext-->
<p style="font-size: 250%; font-family: 'Indie Flower';">
Willkommen bei den Corona-Statistiken</br>
von Andreas Schult</br></br>
100% Free & Open Source</p>
<?php
# Fußteil einbinden
include ("./includes/footer.php");
?>
zusammenfassung.php<?php
include ("./includes/header.php");
// der Inhalt
echo "<h3>aktuelle Zusammenfassung und Auswertungen</h3>\n";
# <p><a href='zusammenfassung_gestern.php?vland=$laenderverweis&vseite=zusammenfassung_gestern'>Einen Tag zurück</a></p>\n";
$input = file("corona_daten.csv");
# Für jeden Eintrag von $input (= jede Zeile)
for ( $x = 0; $x <= count($input); $x++ ){
# Zeile in ein Array aufspalten und in $array speichern
$array = explode(",", $input[$x]);
# wenn der Länderverweis und das Datum übereinstimmen
if ($array[$liste_kopffelder["iso_code"]] == $laenderverweis && $array[$liste_kopffelder["date"]] == $datumakt ){ $n_array = $array; }
}
unset($input);
echo "<table id='zusammenfassung' border='0'>
<tr>
<th>" . $n_array[$liste_kopffelder["Land_deutsch"]] . "</th>
<th class='faelle'>Fälle</th>
<th class='faelle'>je Million EW</th>
<th class='tote'>Tote</th>
<th class='tote'>je Million EW</th>
</tr>
<!--<tr>
<td>aktuell</br><div class='klein'>(" . date("d.m.Y",strtotime($datumakt)) . ")</div></td>
<td class='faelle'><div class='gross'>" . number_format(intval($n_array[$liste_kopffelder["new_cases"]]), 0, ",", ".") . "</div></td>
<td class='faelle'><div class='gross'>" . intval($n_array[$liste_kopffelder["new_cases_per_million"]]) . "</div></td>
<td class='tote'><div class='gross'>" . number_format(intval($n_array[$liste_kopffelder["new_deaths"]]), 0, ",", ".") . "</div></td>
<td class='tote'><div class='gross'>" . number_format(floatval($n_array[$liste_kopffelder["new_deaths_per_million"]]), 2, ",", ".") . "</div></td>
</tr>-->
<tr>
<td>letzte 7 Tage</td>
<td class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_7_abs"]], 0, ",", ".") . "<div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Faelle_neu_7_abs"]], 0, ",", ".") . " / Tag</div></td>
<td class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_7_ppm"]], 0, ",", ".") . "<div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Faelle_neu_7_ppm"]], 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format($n_array[$liste_kopffelder["Sum_Tote_neu_7_abs"]], 0, ",", ".") . "<div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Tote_neu_7_abs"]], 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format($n_array[$liste_kopffelder["Sum_Tote_neu_7_ppm"]], 2, ",", ".") . "<div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Tote_neu_7_ppm"]], 2, ",", ".") . " / Tag</div></td>
</tr>
<tr>
<td>vorherige 7 Tage</td>
<td class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_14_abs"]]-$n_array[$liste_kopffelder["Sum_Faelle_neu_7_abs"]], 0, ",", ".") . "<div class='klein'>" . number_format(($n_array[$liste_kopffelder["Sum_Faelle_neu_14_abs"]] - $n_array[$liste_kopffelder["Sum_Faelle_neu_7_abs"]]) / 7, 0, ",", ".") . " / Tag</div></td>
<td class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_14_ppm"]]-$n_array[$liste_kopffelder["Sum_Faelle_neu_7_ppm"]], 0, ",", ".") . "<div class='klein'>" . number_format(($n_array[$liste_kopffelder["Sum_Faelle_neu_14_ppm"]] - $n_array[$liste_kopffelder["Sum_Faelle_neu_7_ppm"]]) / 7, 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format($n_array[$liste_kopffelder["Sum_Tote_neu_14_abs"]]-$n_array[$liste_kopffelder["Sum_Tote_neu_7_abs"]], 0, ",", ".") . "<div class='klein'>" . number_format(($n_array[$liste_kopffelder["Sum_Tote_neu_14_abs"]] - $n_array[$liste_kopffelder["Sum_Tote_neu_7_abs"]]) / 7, 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format($n_array[$liste_kopffelder["Sum_Tote_neu_14_ppm"]]-$n_array[$liste_kopffelder["Sum_Tote_neu_7_ppm"]], 2, ",", ".") . "<div class='klein'>" . number_format(($n_array[$liste_kopffelder["Sum_Tote_neu_14_ppm"]] - $n_array[$liste_kopffelder["Sum_Tote_neu_7_ppm"]]) / 7, 2, ",", ".") . " / Tag</div></td>
</tr>
<tr>
<td>7-Tage-Inzidenz</td>
<td colspan='4' class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_7_ppm"]] / 10, 0, ",", ".") . "<div class='klein'>je 100.000 Einwohner</div></td>
</tr>
<tr>
<td>Veränderung zur Vorwoche</td>
<td class='faelle' colspan='2'>" ;
if( ( $n_array[$liste_kopffelder["Sum_Faelle_neu_14_abs"]] - 2 * $n_array[$liste_kopffelder["Sum_Faelle_neu_7_abs"]] ) / $n_array[$liste_kopffelder["Sum_Faelle_neu_7_abs"]] < 0 ){ echo "+"; }
echo number_format( ( $n_array[$liste_kopffelder["Sum_Faelle_neu_14_abs"]] - 2 * $n_array[$liste_kopffelder["Sum_Faelle_neu_7_abs"]]) / ($n_array[$liste_kopffelder["Sum_Faelle_neu_14_abs"]] - $n_array[$liste_kopffelder["Sum_Faelle_neu_7_abs"]] ) * -100, 2, ",", ".");
echo " %</td>
<td class='tote' colspan='2'>";
if( ( $n_array[$liste_kopffelder["Sum_Tote_neu_14_abs"]] - 2 * $n_array[$liste_kopffelder["Sum_Tote_neu_7_abs"]] ) / $n_array[$liste_kopffelder["Sum_Tote_neu_14_abs"]] < 0){ echo "+"; }
echo number_format( ( $n_array[$liste_kopffelder["Sum_Tote_neu_14_abs"]] - 2 * $n_array[$liste_kopffelder["Sum_Tote_neu_7_abs"]] ) / ($n_array[$liste_kopffelder["Sum_Tote_neu_14_abs"]] - $n_array[$liste_kopffelder["Sum_Tote_neu_7_abs"]]) * -100, 2, ",", ".");
echo " %</td>
</tr>
<tr>
<td>letzte 2 Wochen</td>
<td class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_14_abs"]], 0, ",", ".") . "</br><div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Faelle_neu_14_abs"]], 0, ",", ".") . " / Tag</div></td>
<td class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_14_ppm"]], 0, ",", ".") . "</br><div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Faelle_neu_14_ppm"]], 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format($n_array[$liste_kopffelder["Sum_Tote_neu_14_abs"]], 0, ",", ".") . "</br><div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Tote_neu_14_abs"]], 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format($n_array[$liste_kopffelder["Sum_Tote_neu_14_ppm"]], 2, ",", ".") . "</br><div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Tote_neu_14_ppm"]], 2, ",", ".") . " / Tag</div></td>
</tr>
<tr>
<td>letzte 4 Wochen</td>
<td class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_28_abs"]], 0, ",", ".") . "</br><div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Faelle_neu_28_abs"]], 0, ",", ".") . " / Tag</div></td>
<td class='faelle'>" . number_format($n_array[$liste_kopffelder["Sum_Faelle_neu_28_ppm"]], 0, ",", ".") . "</br><div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Faelle_neu_28_ppm"]], 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format($n_array[$liste_kopffelder["Sum_Tote_neu_28_abs"]], 0, ",", ".") . "</br><div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Tote_neu_28_abs"]], 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format($n_array[$liste_kopffelder["Sum_Tote_neu_28_ppm"]], 2, ",", ".") . "</br><div class='klein'>" . number_format($n_array[$liste_kopffelder["GD_Tote_neu_28_ppm"]], 2, ",", ".") . " / Tag</div></td>
</tr>
<tr>
<td>Seit Beginn</td>
<td class='faelle'>" . number_format(intval($n_array[$liste_kopffelder["total_cases"]]), 0, ",", ".") . "<br><div class='klein'>". number_format(intval($n_array[$liste_kopffelder["total_cases"]])/intval($tage), 0, ",", ".") . " / Tag</div></td>
<td class='faelle'>" . number_format(floatval($n_array[$liste_kopffelder["total_cases_per_million"]]), 0, ",", ".") . "</br><div class='klein'>(" . number_format(floatval($n_array[$liste_kopffelder["total_cases_per_million"]])/10000, 2, ",", ".") . " %) </div></td>
<td class='tote'>" . number_format(intval($n_array[$liste_kopffelder["total_deaths"]]), 0, ",", ".") . "<br><div class='klein'>" . number_format(intval($n_array[$liste_kopffelder["total_deaths"]])/intval($tage), 0, ",", ".") . " / Tag</div></td>
<td class='tote'>" . number_format(floatval($n_array[$liste_kopffelder["total_deaths_per_million"]]), 1, ",", ".") . "</br><div class='klein'>(" . number_format(floatval($n_array[$liste_kopffelder["total_deaths_per_million"]])/10000, 2, ",", ".") . " %)</div></td>
</tr>
<tr>
<td>Sterblichkeit*</td>
<td colspan='4' class='tote'>" . number_format(intval($n_array[$liste_kopffelder["total_deaths"]])/(intval($n_array[$liste_kopffelder["Genesene_ppm"]])*intval($n_array[$liste_kopffelder["population"]])/1000000), 4, ",", ".") . " Tote / Fall = " . number_format((intval($n_array[$liste_kopffelder["total_deaths"]])/(intval($n_array[$liste_kopffelder["Genesene_ppm"]])*intval($n_array[$liste_kopffelder["population"]])/1000000))*100, 1, ",", ".") . " %</td>
</tr>
<tr>
<td>Impfquote</td>
<td colspan='4' class='impf'>1. Impfung: " . number_format(floatval($n_array[$liste_kopffelder["people_vaccinated_per_hundred"]]), 2, ",", ".") . " % - 2. Impfung: " . number_format(floatval($n_array[$liste_kopffelder["people_fully_vaccinated_per_hundred"]]), 2, ",", ".") . " %</td>
</tr>
<tr>
<td>Bevölkerung</td>
<td colspan='4' class='bev'>" . number_format(floatval($n_array[$liste_kopffelder["population"]]), 0, ",", ".") . " (" . intval($n_array[$liste_kopffelder["population_density"]]) . " Einw / km²)</td>
</tr>
</table>
<p>* = Die Sterblichkeit bezieht sich auf die Gesamtinfektionen vor 2 Wochen</p>";
// der Fußteil
include ("./includes/footer.php");
?>
verteilung_tabellen.php<?php
include ("./includes/header.php");
$land_akt = $laenderverweis;
$grenzwert = 0.1;
$neues_array = filter_datum();
foreach($neues_array as $arrr) { $sortierspalte[] = $arrr[$liste_kopffelder["Land_deutsch"]]; }
array_multisort($sortierspalte, SORT_ASC, SORT_LOCALE_STRING, $neues_array);
// der Inhalt
echo "<h2>Verteilung der Infektionsfälle und Todesfälle über alle Länder für den " . date("d.m.Y", strtotime($datumakt)) . "</h2>\n";
// Verteilungstabelle
// Regionen
echo "<h2>nach Regionen</h2>\n";
echo "<table id='verteilung2'>
<thead>
<tr>
<th></th>
<th>Trend</th>
<th class='tab_faelle' colspan='4'>Infektionen</th>
<th class='tab_tote' colspan='4'>Todesfälle</th>
<th class='tab_tote'></th>
<th class='tab_impf' colspan='2'>Impfquote %</th>
</tr>
<tr>
<th class='tab_land'>Land<span onclick='tabelle_sortieren_a(0,2)'>↑</span><span onclick='tabelle_sortieren_d(0,2)'>↓</span></th>
<th>28 Tage</th>
<th class='tab_faelle'>Neu*<span onclick='tabelle_sortieren_a(2,2)'>↑</span><span onclick='tabelle_sortieren_d(2,2)'>↓</span></th>
<th class='tab_faelle'>je Million*<span onclick='tabelle_sortieren_a(3,2)'>↑</span><span onclick='tabelle_sortieren_d(3,2)'>↓</span></th>
<th class='tab_faelle'>Gesamt<span onclick='tabelle_sortieren_a(4,2)'>↑</span><span onclick='tabelle_sortieren_d(4,2)'>↓</span></th>
<th class='tab_faelle'>je Million<span onclick='tabelle_sortieren_a(5,2)'>↑</span><span onclick='tabelle_sortieren_d(5,2)'>↓</span></th>
<th class='tab_tote'>Neu*<span onclick='tabelle_sortieren_a(6,2)'>↑</span><span onclick='tabelle_sortieren_d(6,2)'>↓</span></th>
<th class='tab_tote'>je Million*<span onclick='tabelle_sortieren_a(7,2)'>↑</span><span onclick='tabelle_sortieren_d(7,2)'>↓</span></th>
<th class='tab_tote'>Gesamt<span onclick='tabelle_sortieren_a(8,2)'>↑</span><span onclick='tabelle_sortieren_d(8,2)'>↓</span></th>
<th class='tab_tote'>je Million<span onclick='tabelle_sortieren_a(9,2)'>↑</span><span onclick='tabelle_sortieren_d(9,2)'>↓</span></th>
<th class='tab_tote'>Sterblichkeit<span onclick='tabelle_sortieren_a(10,2)'>↑</span><span onclick='tabelle_sortieren_d(10,2)'>↓</span></th>
<th class='tab_impf'>1. Impfung<span onclick='tabelle_sortieren_a(11,2)'>↑</span><span onclick='tabelle_sortieren_d(11,2)'>↓</span></th>
<th class='tab_impf'>vollständig<span onclick='tabelle_sortieren_a(12,2)'>↑</span><span onclick='tabelle_sortieren_d(12,2)'>↓</span></th>
<th class='tab_bev'>Bevölkerung<span onclick='tabelle_sortieren_a(13,2)'>↑</span><span onclick='tabelle_sortieren_d(13,2)'>↓</span></th>
</tr>
</thead>
<tbody>\n";
foreach ($neues_array as $datensatz) {
if ( preg_match("/OWID/i", $datensatz[$liste_kopffelder["iso_code"]]) == 1 &&
preg_match("/OWID_(WRL|EUN)/i", $datensatz[$liste_kopffelder["iso_code"]]) != 1 &&
preg_match("/Kosovo/i", $datensatz[$liste_kopffelder["location"]]) != 1 &&
preg_match("/OWID_(INT|CYN|HIC|LIC|LMC|UMC|WLS|SCT)/i", $datensatz[$liste_kopffelder["iso_code"]]) != 1 &&
$datensatz[$liste_kopffelder["location"]] != ""){
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert ) { $klasse2 = 'pos'; $pfeil = '↗'; } elseif ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert ) { $klasse2 = 'neg'; $pfeil = '↘'; } else { $klasse2 = 'neutr'; $pfeil = '→'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert * 10 ) { $pfeil = '↑'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert * 10 ) { $pfeil = '↓'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert * 100 ) { $pfeil = '↑↑'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert * 100 ) { $pfeil = '↓↓'; }
echo "<tr class='zeilen'>";
echo "<td class='tab_land'><a href='zeitreihen_tabellen.php?vland=" . $datensatz[$liste_kopffelder["iso_code"]] . "&vseite=zeitreihen_tabellen'>" . $datensatz[$liste_kopffelder["Land_deutsch"]] . "</a></td>\n";
echo "<td class='tab_trend_$klasse2'>" . number_format(floatval(-$datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]), 2, ",", ".") . " ($pfeil)</td>";
echo "<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_abs"]]), 1, ",", "."). "</td>\n";
echo "<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_ppm"]]), 2, ",", "."). "</td>\n";
echo "<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["total_cases"]]), 0, ",", "."). "</td>\n";
echo "<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["total_cases_per_million"]]), 1, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_abs"]]), 1, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_ppm"]]), 2, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["total_deaths"]]), 0, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]]), 1, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . str_replace("nan","0",number_format(floatval($datensatz[$liste_kopffelder["total_deaths"]]) / (floatval($datensatz[$liste_kopffelder["Genesene_ppm"]]) * floatval($datensatz[$liste_kopffelder["population"]]) / 100000000), 2, ",", ".")) . " %</td>";
echo "<td class='tab_impf'>" . number_format(floatval($datensatz[$liste_kopffelder["people_vaccinated_per_hundred"]]), 2, ",", ".") . "</td>\n";
echo "<td class='tab_impf'>" . number_format(floatval($datensatz[$liste_kopffelder["people_fully_vaccinated_per_hundred"]]), 2, ",", ".") . "</td>\n";
echo "<td class='tab_bev'>" . number_format(floatval($datensatz[$liste_kopffelder["population"]]), 0, ",", ".") . "</td>\n";
echo "</tr>\n";
}}
echo "</tbody>
<tfoot>";
foreach (array("/OWID_WRL/i","/OWID_EUN/i") as $suchmuster) {
foreach ($neues_array as $datensatz) {
if ( preg_match($suchmuster, $datensatz[$liste_kopffelder["iso_code"]]) == 1 ){
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert ) { $klasse2 = 'pos'; $pfeil = '↗'; } elseif ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert ) { $klasse2 = 'neg'; $pfeil = '↘'; } else { $klasse2 = 'neutr'; $pfeil = '→'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert * 10 ) { $pfeil = '↑'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert * 10 ) { $pfeil = '↓'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert * 100 ) { $pfeil = '↑↑'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert * 100 ) { $pfeil = '↓↓'; }
echo "<tr class='zeilen'>";
echo "<td class='tab_land'><a href='zeitreihen_tabellen.php?vland=" . $datensatz[$liste_kopffelder["iso_code"]] . "&vseite=zeitreihen_tabellen'>" . $datensatz[$liste_kopffelder["Land_deutsch"]] . "</a></td>\n";
echo "<td class='tab_trend_$klasse2'>" . number_format(floatval(-$datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]), 2, ",", ".") . " ($pfeil)</td>";
echo "<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_abs"]]), 1, ",", "."). "</td>\n";
echo "<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_ppm"]]), 2, ",", "."). "</td>\n";
echo "<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["total_cases"]]), 0, ",", "."). "</td>\n";
echo "<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["total_cases_per_million"]]), 1, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_abs"]]), 1, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_ppm"]]), 2, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["total_deaths"]]), 0, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]]), 1, ",", "."). "</td>\n";
echo "<td class='tab_tote'>" . str_replace("nan", "0", number_format(floatval($datensatz[$liste_kopffelder["total_deaths"]]) / (floatval($datensatz[$liste_kopffelder["Genesene_ppm"]]) * floatval($datensatz[$liste_kopffelder["population"]]) / 100000000), 2, ",", ".")) . " %</td>";
echo "<td class='tab_impf'>" . number_format(floatval($datensatz[$liste_kopffelder["people_vaccinated_per_hundred"]]), 2, ",", ".") . "</td>\n";
echo "<td class='tab_impf'>" . number_format(floatval($datensatz[$liste_kopffelder["people_fully_vaccinated_per_hundred"]]), 2, ",", ".") . "</td>\n";
echo "<td class='tab_bev'>" . number_format(floatval($datensatz[$liste_kopffelder["population"]]), 0, ",", ".") . "</td>\n";
echo "</tr>\n";
}}}
?>
</tfoot>
</table>
<br><br>
<h2>Länder</h2>
<!-- Länder -->
<table id='verteilung1'>
<thead>
<tr>
<th colspan='2'></th>
<th>Trend</th>
<th class='tab_faelle' colspan='4'>Infektionen</th>
<th class='tab_tote' colspan='4'>Todesfälle</th>
<th class='tab_tote'></th>
<th class='tab_impf' colspan='2'>Impfquote %</th>
</tr>
<tr>
<th class='tab_land'>Land<span onclick='tabelle_sortieren_a(0,1)'>↑</span><span onclick='tabelle_sortieren_d(0,1)'>↓</span></th>
<th class='tab_land'>Kontinent<span onclick='tabelle_sortieren_a(1,1)'>↑</span><span onclick='tabelle_sortieren_d(1,1)'>↓</span></th>
<th>28 Tage<span onclick='tabelle_sortieren_a(2,1)'>↑</span><span onclick='tabelle_sortieren_d(2,1)'>↓</span></th>
<th class='tab_faelle'>Neu*<span onclick='tabelle_sortieren_a(3,1)'>↑</span><span onclick='tabelle_sortieren_d(3,1)'>↓</span></th>
<th class='tab_faelle'>je Million*<span onclick='tabelle_sortieren_a(4,1)'>↑</span><span onclick='tabelle_sortieren_d(4,1)'>↓</span></th>
<th class='tab_faelle'>Gesamt<span onclick='tabelle_sortieren_a(5,1)'>↑</span><span onclick='tabelle_sortieren_d(5,1)'>↓</span></th>
<th class='tab_faelle'>je Million<span onclick='tabelle_sortieren_a(6,1)'>↑</span><span onclick='tabelle_sortieren_d(6,1)'>↓</span></th>
<th class='tab_tote'>Neu*<span onclick='tabelle_sortieren_a(7,1)'>↑</span><span onclick='tabelle_sortieren_d(7,1)'>↓</span></th>
<th class='tab_tote'>je Million*<span onclick='tabelle_sortieren_a(8,1)'>↑</span><span onclick='tabelle_sortieren_d(8,1)'>↓</span></th>
<th class='tab_tote'>Gesamt<span onclick='tabelle_sortieren_a(9,1)'>↑</span><span onclick='tabelle_sortieren_d(9,1)'>↓</span></th>
<th class='tab_tote'>je Million<span onclick='tabelle_sortieren_a(10,1)'>↑</span><span onclick='tabelle_sortieren_d(10,1)'>↓</span></th>
<th class='tab_tote'>Sterblichkeit<span onclick='tabelle_sortieren_a(11,1)'>↑</span><span onclick='tabelle_sortieren_d(11,1)'>↓</span></th>
<th class='tab_impf'>1. Impfung<span onclick='tabelle_sortieren_a(12,1)'>↑</span><span onclick='tabelle_sortieren_d(12,1)'>↓</span></th>
<th class='tab_impf'>vollständig<span onclick='tabelle_sortieren_a(13,1)'>↑</span><span onclick='tabelle_sortieren_d(13,1)'>↓</span></th>
<th class='tab_bev'>Bevölkerung<span onclick='tabelle_sortieren_a(14,1)'>↑</span><span onclick='tabelle_sortieren_d(14,1)'>↓</span></th>
</tr>
</thead>
<tbody>
<?php
foreach ($neues_array as $datensatz) {
if ( preg_match("/OWID/i", $datensatz[$liste_kopffelder["iso_code"]]) != 1 && $datensatz[$liste_kopffelder["location"]] != "" ){
if ( $datensatz[$liste_kopffelder["iso_code"]] == $laenderverweis ) { $klasse = "_xxx"; } else { $klasse = ""; } # aktuelles Land hervorheben
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert ) { $klasse2 = 'pos'; $pfeil = '↗';
} elseif ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert ) { $klasse2 = 'neg'; $pfeil = '↘';
} else { $klasse2 = 'neutr'; $pfeil = '→'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert * 10 ) { $pfeil = '↑'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert * 10 ) { $pfeil = '↓'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) > $grenzwert * 100 ) { $pfeil = '↑↑'; }
if ( -floatval($datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]) < -$grenzwert * 100 ) { $pfeil = '↓↓'; }
echo "<tr class='zeilen'><td class='tab_land" . $klasse . "'><a href='zeitreihen_tabellen.php?vland=" . $datensatz[$liste_kopffelder["iso_code"]] . "&vseite=zeitreihen_tabellen'>" . $datensatz[$liste_kopffelder["Land_deutsch"]] . "</a></td>\n";
$xxx = $datensatz[$liste_kopffelder['continent']];
echo "<td class='tab_land" . $klasse . "'>" . $liste_laender_en_de["$xxx"] . "</td>\n";
echo "<td class='tab_trend_$klasse2'>" . number_format(floatval(-$datensatz[$liste_kopffelder["Reg28_Faelle_neu_ppm"]]), 2, ",", ".") . " ($pfeil)</td>";
echo "<td class='tab_faelle" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_abs"]]), 1, ",", ".") . "</td>\n";
echo "<td class='tab_faelle" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_ppm"]]), 2, ",", ".") . "</td>\n";
echo "<td class='tab_faelle" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["total_cases"]]), 0, ",", ".") . "</td>\n";
echo "<td class='tab_faelle" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["total_cases_per_million"]]), 1, ",", ".") . "</td>\n";
echo "<td class='tab_tote" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_abs"]]), 1, ",", ".") . "</td>\n";
echo "<td class='tab_tote" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_ppm"]]), 2, ",", ".") . "</td>\n";
echo "<td class='tab_tote" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["total_deaths"]]), 0, ",", ".") . "</td>\n";
echo "<td class='tab_tote" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]]), 1, ",", ".") . "</td>\n";
echo "<td class='tab_tote" . $klasse . "'>" . str_replace("nan", "0", number_format(floatval($datensatz[$liste_kopffelder["total_deaths"]]) / (floatval($datensatz[$liste_kopffelder["Genesene_ppm"]]) * floatval($datensatz[$liste_kopffelder["population"]]) / 100000000), 2, ",", ".")) . " %</td>";
echo "<td class='tab_impf" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["people_vaccinated_per_hundred"]]), 2, ",", ".") . "</td>\n";
echo "<td class='tab_impf" . $klasse . "'>" . number_format(floatval($datensatz[$liste_kopffelder["people_fully_vaccinated_per_hundred"]]), 2, ",", ".") . "</td>\n";
echo "<td class='tab_bev'>" . number_format(floatval($datensatz[$liste_kopffelder["population"]]), 0, ",", ".") . "</td>\n";
echo "</tr>\n";
}}
echo "</tbody>\n</table>\n";
echo "<p>* = 14-Tage-Durchschnitt</p>";
echo "<p>Legende</p><p>Einheit: Zuwachs der Infektionsrate je 1.000.000 Einwohner pro Tag</p>";
echo "<table>
<tr>
<td class='tab_trend_pos'>↑↑</td>
<td>Trend größer als " . $grenzwert * 100 . "</td>
</tr>
<tr>
<td class='tab_trend_pos'>↑</td>
<td>Trend größer als " . $grenzwert * 10 . "</td>
</tr>
<tr>
<td class='tab_trend_pos'>↗</td>
<td>Trend größer als $grenzwert</td>
</tr>
<tr>
<td class='tab_trend_neutr'>→</td>
<td>Trend zwischen $grenzwert und -$grenzwert</td>
</tr>
<tr>
<td class='tab_trend_neg'>↘</td>
<td>Trend kleiner als -$grenzwert</td>
</tr>
<tr>
<td class='tab_trend_neg'>↓</td>
<td>Trend kleiner als " . -$grenzwert * 10 . "</td>
</tr>
<tr>
<td class='tab_trend_neg'>↓↓</td>
<td>Trend kleiner als " . -$grenzwert * 100 . "</td>
</tr>
</table>\n</br>";
// der Fußteil
include ("./includes/footer.php");
?>
verteilung_diagramme.php<?php
include ("./includes/header.php");
function test_region($daten){
global $region;
global $liste_kopffelder;
if ( preg_match("/$region/i", $daten[$liste_kopffelder["continent"]]) == 1 ){
return 1;
}
}
echo "<h2>Verteilung zwischen den Ländern für den " . date("d.m.Y",strtotime($datumakt)) . " (14-Tage-Mittel)</h2>\n";
$regionen = array("Europe","North America","South America","Africa","Asia","Oceania");
# Daten von heute filtern
$neues_array = filter_datum();
# index Regionen
$r = 0;
foreach ( $regionen as $region ) {
$neues_array2[$r] = array_filter($neues_array, "test_region");
$neues_array3[$r] = array_filter($neues_array, "test_region");
foreach($neues_array2[$r] as $arrr) { $sort_numcie[$r][] = $arrr[$liste_kopffelder["Sum_Faelle_neu_14_ppm"]]; }
array_multisort($sort_numcie[$r], SORT_DESC, $neues_array2[$r]);
foreach($neues_array3[$r] as $arrr) { $sort_numcie2[$r][] = $arrr[$liste_kopffelder["Sum_Tote_neu_14_ppm"]]; }
array_multisort($sort_numcie2[$r], SORT_DESC, $neues_array3[$r]);
$breite = (count($neues_array3[$r])) * 10;
$hoehe = 320;
# Maximum ermitteln
$max_f = max(array_column($neues_array2[$r], $liste_kopffelder["Sum_Faelle_neu_14_ppm"]));
$max_t = max(array_column($neues_array2[$r], $liste_kopffelder["Sum_Tote_neu_14_ppm"]));
# arithemtisches Mittel = Summe der Wertesoaplte durch Anzahl der Werte
$f_quer = array_sum(array_column($neues_array2[$r], $liste_kopffelder["Sum_Faelle_neu_14_ppm"])) / count(array_column($neues_array3[$r], $liste_kopffelder["Sum_Faelle_neu_14_ppm"]));
$t_quer = array_sum(array_column($neues_array2[$r], $liste_kopffelder["Sum_Tote_neu_14_ppm"])) / count(array_column($neues_array3[$r], $liste_kopffelder["Sum_Tote_neu_14_ppm"]));
echo "<h3>Region: " . $liste_laender_en_de["$region"] . "</h3>\n";
echo "<h3><span class='link' onclick='";
echo 'document.getElementById("verteilung_' . $r . '_tot").style.visibility="hidden";document.getElementById("verteilung_' . $r . '_inf").style.visibility="visible";';
echo "'>nach Neuinfektionen</span> / <span class='link' onclick='";
echo 'document.getElementById("verteilung_' . $r . '_tot").style.visibility="visible";document.getElementById("verteilung_' . $r . '_inf").style.visibility="hidden";';
echo "' style='color:red;'>nach Todesfällen</span></h3>\n";
echo "<div style='position:relative;'>\n";
echo "<svg style='position:relative;visibility:visible;' id='verteilung_" . $r . "_inf' width='" . ($breite + 230) . "' height='" . $hoehe . "'>
<defs>
<style type='text/css'>
<![CDATA[
text {
fill:#000000;
font-size:7pt;
}
line {
stroke-width:2
}
.l_A {
stroke:#000000;
stroke-width:5
}
.l_B {
stroke:#ff0000;
stroke-width:4
}
.l_C {
stroke:#000000;
stroke-width:4
}
.l_D {
stroke:#ff0000;
stroke-width:5
}
.l1 {
stroke:#000000;
}
.l2 {
stroke:#ff0000;
}
.t_schwarz {
font-size:11pt;
}
.t_rot {
fill:red;
font-size:11pt;
}
]]>
</style>
</defs>\n";
$z = 0;
foreach ( $neues_array2[$r] as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["Sum_Faelle_neu_14_ppm"]]);
$wert_t = floatval($datensatz[$liste_kopffelder["Sum_Tote_neu_14_ppm"]]);
# Tote
echo Linie($z * 10 + 5, 200, $z * 10 + 5, round((200 - 200 * $wert_t / $max_t), 1), "l_B", "");
# Fälle
echo Linie($z * 10 + 2, 200, $z * 10 + 2, round((200 - 200 * $wert_f / $max_f), 1), "l_A", "");
if ($datensatz[0] == $laenderverweis) {
$nummer = " ($z)";
$farbe = "fill:#FF0000;";
} else {
$nummer = "";
$farbe = "";
}
echo Text($z * 10 + 2,204,"",$farbe,$datensatz[$liste_kopffelder["Land_deutsch"]] . $nummer,"rotate(70," . ($z * 10 + 2) . ",204)");
$z++;
}
# Mittelwertlinien
echo Linie(0, round((200 - 200 * $f_quer / $max_f), 1), $breite, round((200 - 200 * $f_quer / $max_f), 1), "l1", "");
echo Linie(0, round((200 - 200 * $t_quer / $max_t), 1), $breite, round((200 - 200 * $t_quer / $max_t), 1), "l2", "");
# Legende
echo Text($breite + 10, 80, "t_schwarz", "", "Durchschnitt", "");
echo Text($breite + 15, 100, "t_schwarz", "", number_format($f_quer / 14,2,",",".") . " Infektionen", "");
echo Text($breite + 15, 118, "t_rot","", number_format($t_quer / 14,2,",",".") . " Todesfälle", "");
echo Text($breite + 10, 140, "t_schwarz", "","Maximum", "");
echo Text($breite + 15, 160, "t_schwarz", "", number_format($max_f / 14,2,",",".") . " Infektionen", "");
echo Text($breite + 15, 178, "t_rot", "", number_format($max_t / 14,2,",",".") . " Todesfälle", "");
echo Text($breite + 10, 200, "t_schwarz", "", "je Million Einwohner pro Tag", "");
echo "</svg>\n</br>\n";
echo "<svg style='position:absolute;top:0;visibility:hidden;' id='verteilung_" . $r . "_tot' width='" . ($breite + 230) . "' height='" . $hoehe . "'>
<defs>
<style type='text/css'>
<![CDATA[
]]>
</style>
</defs>\n";
$z = 0;
foreach ( $neues_array3[$r] as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["Sum_Faelle_neu_14_ppm"]]);
$wert_t = floatval($datensatz[$liste_kopffelder["Sum_Tote_neu_14_ppm"]]);
# Tote
echo Linie($z * 10 + 5, 200, $z * 10 + 5, round((200 - 200 * $wert_t / $max_t), 1), "l_D", "");
# Fälle
echo Linie($z * 10 + 2, 200, $z * 10 + 2, round((200 - 200 * $wert_f / $max_f), 1), "l_C", "");
if ($datensatz[0] == $laenderverweis) {
$nummer = " ($z)";
$farbe = "fill:#FF0000;";
} else {
$nummer = "";
$farbe = "";
}
echo Text($z * 10 + 2, 204, "", $farbe,$datensatz[$liste_kopffelder["Land_deutsch"]] . $nummer,"rotate(70," . ($z * 10 + 2) . ",204)");
$z++;
}
# Mittelwertlinien
echo Linie(0, round((200 - 200 * $f_quer / $max_f), 1), $breite, round((200 - 200 * $f_quer / $max_f), 1), "l1", "");
echo Linie(0, round((200 - 200 * $t_quer / $max_t), 1), $breite, round((200 - 200 * $t_quer / $max_t), 1), "l2", "");
# Legende
echo Text($breite + 10, 80, "t_schwarz", "", "Durchschnitt", "");
echo Text($breite + 15, 100, "t_schwarz", "", number_format($f_quer / 14,2,",",".") . " Infektionen", "");
echo Text($breite + 15, 118, "t_rot", "", number_format($t_quer / 14,2,",",".") . " Todesfälle", "");
echo Text($breite + 10, 140, "t_schwarz", "","Maximum", "");
echo Text($breite + 15, 160, "t_schwarz", "", number_format($max_f / 14,2,",",".") . " Infektionen", "");
echo Text($breite + 15, 178, "t_rot", "", number_format($max_t / 14,2,",",".") . " Todesfälle", "");
echo Text($breite + 10, 200, "t_schwarz", "", "je Million Einwohner pro Tag", "");
echo "</svg>\n</br>\n";
echo "</div>\n";
$r++;
}
// der Fußteil
include ("./includes/footer.php");
?>
includes/zeitreihe_aktive_infektionen.php<?php
# Maximum ermitteln (Genesene)
$max_g = max(array_column($neues_array, $liste_kopffelder["Genesene_ppm"])) / 3;
echo "<svg width='$svg_laenge' height='$svg_hoehe' transform='scale(" . 1 / $faktor . ")'>\n";
echo "<g id='plot2' transform='translate($x_offset,0)'>\n";
#x-Achse unten
echo "<line x1='0' y1='400' x2='" . $z * 2 . "' y2='400' style='stroke-width:2'/>\n";
echo "<g id='plot2' transform='translate(0,400)'>\n";
echo "<g style='stroke-width:2;'>";
$z = 0;
foreach ( $neues_array as $datensatz ) {
$wert_f = round((-400 * floatval($datensatz[$liste_kopffelder["total_cases_per_million"]]) / $max_g), 1);
$wert_t = round((-400 * floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]]) / $max_g), 1);
$wert_g = round((-400 * floatval($datensatz[$liste_kopffelder["Genesene_ppm"]]) / $max_g), 1);
# aktive Infektionen
$wert_a = $wert_f - $wert_g;
$pos_x = $z * $s;
# aktive Infektionen
echo "<line x1='$pos_x' y1='0' x2='$pos_x' y2='$wert_a' class='l_gf'/>\n";
// Datum
# Wenn die letzten beiden Zeichen des Datumswertes "01" sind
if ( substr($datensatz[$liste_kopffelder["date"]], 8, 2) == "01" ){
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text x='" . ( $z * 2 - 3 ) . "' y='10' transform='rotate(70," . ( $z * 2 - 3 ) . ",10)'>" . date("M y", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . $z * 2 . "' y1='0' x2='" . $z * 2 . "' y2='5' />\n";
}
$z++;
}
echo "</g>";
echo "</g>";
// Skalierung
# Maximum abrunden
$max_g_gerundet = intval(round($max_g));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_g_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_g_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
$interval_skala = pow(10, ($laenge - 1));
// Hauptlinien
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((400 - 400 * $a * $interval_skala / $max_g), 1) . "' x2='$svg_laenge' y2='" . round((400 - 400 * $a * $interval_skala / $max_g), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * $a * $interval_skala / $max_g), 1) . "' text-anchor='end' style='fill:#000000;'>" . number_format($a * $interval_skala, 0,",",".") . "</text>\n";
// Hilflinien
# wenn es weniger als 3 Hauptlinien
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_g ) . "' text-anchor='end' x2='$svg_laenge' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_g ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . ( 405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_g ) . "' text-anchor='end' style='fill:#000000'>" . number_format(($a * $interval_skala - $interval_skala / 2), 0,",",".") . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
echo "</g>";
//Legende2
echo "
<g id='legende2' transform='translate(" . ( $x_offset + 50 ) . ",0)'>
<rect x='0' y='40' rx='8' ry='8' width='200' height='85' style='stroke:#000000; fill:#FFFFFF; stroke-width:2; fill-opacity:0.8' />
<text x='10' y='60' class='legende'>Legende</text>
<text x='20' y='80' style='fill:#000088;'>Aktive Infektionen</text>
<text x='20' y='95' style='fill:#FF6600;'>Genesene</text>
<text x='20' y='110' style='fill:#770000;'>Todesfälle</text>
</g>\n";
echo "</svg>\n";
?>
includes/zeitreihe_differential.php<?php
# Land filtern
#$neues_array = array_filter($array,"test_land");
$neues_array2 = array_map("werte_berechnen",$neues_array);
$neues_array3 = array_map("fehler_auf_null",$neues_array2);
// der Inhalt
$x_offset = 80;
# Länge der SVG-Datei
$svg_laenge = count($neues_array2) * $s + $x_offset + 10;
# Höhe der SVG-Datei
$svg_hoehe = 500;
# Wertespalten extrahieren
$werte_f = array_column($neues_array2, 1);
$werte_t = array_column($neues_array2, 2);
$max_f = max($werte_f);
$max_t = max($werte_t);
$min_f = min($werte_f);
$min_t = min($werte_t);
# Maximum ermitteln (Fälle)
if ( abs($min_f) > abs($max_f) ) { $max_f = abs($min_f); }
# Maximum ermitteln (Tote)
if ( abs($min_t) > abs($max_t) ) { $max_t = abs($min_t); }
echo "<!-- Differential -->\n";
echo "<svg width='$svg_laenge' height='$svg_hoehe' transform='scale(" . 1 / $faktor . ")'>\n";
echo "<g id='plot1' transform='translate($x_offset,0)'>\n";
#x-Achse unten
echo "<line x1='0' y1='200' x2='$svg_laenge' y2='200' style='stroke:#000000; stroke-width:2'/>\n";
echo "<g id='plot2' transform='translate(0,200)'>\n";
echo "<g style='stroke-width:2;'>";
$z = 0;
foreach ( $neues_array2 as $datensatz ) {
$wert_f = -200 * round(floatval($datensatz[1]) / $max_f, 3);
$wert_t = -200 * round(floatval($datensatz[2]) / $max_t, 3);
$pos_x = $z * $s + 2;
echo "<line x1='$pos_x' y1='$wert_f' x2='$pos_x' y2='0' style='stroke:#000077DD;'/>\n";
echo "<line x1='$pos_x' y1='$wert_t' x2='$pos_x' y2='0' style='stroke:#770000DD;'/>\n";
// Datum zeichnen
# Wenn die letzten beiden Zeichen des Datumswertes "01" sind
if ( substr($datensatz[0], 8, 2) == "01" ){
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text x='" . ( $z * 2 - 3 ) . "' y='210' style='fill:#000000;' transform='rotate(90," . ( $z * 2 - 3 ) . ",210)'>" . date("M y",strtotime($datensatz[0])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . $z * 2 . "' y1='200' x2='" . $z * 2 . "' y2='205' style='stroke:#000000;' />\n";
}
$z++;
}
echo "</g>\n";
echo "</g>\n";
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
# alternativ: interval_skala=ceil(log10($zahl);
$interval_skala = pow(10, ($laenge - 1));
// Hauptlinien
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((200 - 200 * $a * $interval_skala / $max_f ), 1) . "' x2='" . $svg_laenge . "' y2='" . round((200 - 200 * $a * $interval_skala / $max_f), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((205 - 200 * $a * $interval_skala / $max_f), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . $a * $interval_skala . "</text>\n";
echo "<text x='-2' y='" . round((205 - 200 * $a * $interval_skala / $max_f) + 15, 1) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . $a * $interval_skala / 10 . "</text>\n";
echo "<line x1='0' y1='" . round((200 + 200 * $a * $interval_skala / $max_f ), 1) . "' x2='" . $svg_laenge . "' y2='" . round((200 + 200 * $a * $interval_skala / $max_f), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((205 + 200 * $a * $interval_skala / $max_f), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>- " . $a * $interval_skala . "</text>\n";
echo "<text x='-2' y='" . round((205 + 200 * $a * $interval_skala / $max_f) + 15, 1) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>- " . $a * $interval_skala / 10 . "</text>\n";
// Hilflinien
# wenn es weniger als 3 Hauptlinien gibt
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 200 - 200 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' x2='" . $svg_laenge . "' y2='" . ( 200 - 200 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((205 - 200 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . round((205 - 200 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) + 15, 1) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . $a * $interval_skala / 10 . "</text>\n";
echo "<line x1='0' y1='" . ( 200 + 200 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' x2='" . $svg_laenge . "' y2='" . ( 200 + 200 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((205 + 200 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>- " . ( $a * $interval_skala - $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . round((205 + 200 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) + 15, 1) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>- " . $a * $interval_skala / 10 . "</text>\n";
}
}
echo "<text x='" . ( 15 - $x_offset ) . "' y='280' style='fill:#000000' transform='rotate(-90," . ( 15 - $x_offset ) . ",280)'>Veränderung absolut</text>\n";
echo "<text x='" . ( 35 - $x_offset ) . "' y='320' style='fill:#000000' transform='rotate(-90," . ( 35 - $x_offset ) . ",320)'>[Je Million Einwohner pro Tag]</text>\n";
echo "</g>\n";
// Legende4
echo "
<g id='legende4' transform='translate(" . ( $x_offset + 20 ) . ",-10)'>
<rect x='0' y='40' rx='8' ry='8' width='180' height='80' style='stroke:#000000; fill:#FFFFFF; stroke-width:2; fill-opacity:0.8'/>
<text x='20' y='60' style='fill:#000000'>Legende</text>
<text x='30' y='80' style='fill:#0000FF'>Neuinfektionen</text>
<text x='30' y='100' style='fill:#FF0000'>Todesfälle</text>
</g>\n";
echo "</svg>\n\n";
?>
includes/zeitreihe_gesamtinfektionen.php<?php
# Maximum ermitteln (Fälle kumuliert)
$max_f_ges = max(array_column($neues_array, $liste_kopffelder["total_cases_per_million"]));
echo "<svg width='$svg_laenge' height='$svg_hoehe' transform='scale(" . 1 / $faktor . ")'>\n";
echo "<g id='plot2' transform='translate($x_offset,0)'>\n";
#x-Achse unten
echo "<line x1='0' y1='400' x2='" . $z * 2 . "' y2='400' style='stroke-width:2'/>\n";
echo "<g id='plot2' transform='translate(0,400)'>\n";
echo "<g style='stroke-width:2;'>";
$z = 0;
foreach ( $neues_array as $datensatz ) {
$wert_f = round((-400 * floatval($datensatz[$liste_kopffelder["total_cases_per_million"]]) / ($max_f_ges * 1.1)), 1);
$wert_t = round((-400 * floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]]) / ($max_f_ges * 1.1)), 1);
$wert_g = round((-400 * floatval($datensatz[$liste_kopffelder["Genesene_ppm"]]) / ($max_f_ges * 1.1)), 1);
# aktive Infektionen
$wert_a = $wert_f - $wert_g;
$pos_x = $z * $s;
# Fälle
# echo "<line x1='$pos_x' y1='0' x2='$pos_x' y2='$wert_f' class='l_gf'/>\n";
# Genesene
echo "<line x1='$pos_x' y1='" . ( $wert_a + $wert_t ) . "' x2='$pos_x' y2='" . ( $wert_a + $wert_g + $wert_t ) . "' class='l_gen'/>\n";
# aktive Infektionen
echo "<line x1='$pos_x' y1='$wert_t' x2='$pos_x' y2='" . ( $wert_a + $wert_t ) . "' class='l_gf'/>\n";
# Tote
echo "<line x1='$pos_x' y1='0' x2='$pos_x' y2='$wert_t' class='l_gt'/>\n";
// Datum
# Wenn die letzten beiden Zeichen des Datumswertes "01" sind
if ( substr($datensatz[$liste_kopffelder["date"]], 8, 2) == "01" ){
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text x='" . ( $z * 2 - 3 ) . "' y='10' transform='rotate(70," . ( $z * 2 - 3 ) . ",10)'>" . date("M y", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . $z * 2 . "' y1='0' x2='" . $z * 2 . "' y2='5' />\n";
}
$z++;
}
echo "</g>";
echo "</g>";
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f_ges * 1.1));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
$interval_skala = pow(10, ($laenge - 1));
// Hauptlinien
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((400 - 400 * $a * $interval_skala / ($max_f_ges * 1.1)), 1) . "' x2='$svg_laenge' y2='" . round((400 - 400 * $a * $interval_skala / ($max_f_ges * 1.1)), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * $a * $interval_skala / ($max_f_ges * 1.1)), 1) . "' text-anchor='end' style='fill:#000000;'>" . number_format($a * $interval_skala, 0,",",".") . "</text>\n";
// Hilflinien
# wenn es weniger als 3 Hauptlinien
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / ($max_f_ges * 1.1) ) . "' text-anchor='end' x2='$svg_laenge' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / ($max_f_ges * 1.1) ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . ( 405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / ($max_f_ges * 1.1) ) . "' text-anchor='end' style='fill:#000000'>" . number_format(($a * $interval_skala - $interval_skala / 2), 0,",",".") . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / ($max_f_ges * 1.1) ) . "' text-anchor='end' x2='$svg_laenge' y2='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / ($max_f_ges * 1.1) ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . ( 405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / ($max_f_ges * 1.1) ) . "' text-anchor='end' style='fill:#000000'>" . number_format(($a * $interval_skala + $interval_skala / 2), 0,",",".") . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
echo "</g>";
//Legende2
echo "
<g id='legende2' transform='translate(" . ( $x_offset + 50 ) . ",0)'>
<rect x='0' y='40' rx='8' ry='8' width='200' height='85' style='stroke:#000000; fill:#FFFFFF; stroke-width:2; fill-opacity:0.8' />
<text x='10' y='60' class='legende'>Legende</text>
<text x='20' y='80' style='fill:#000088;'>Aktive Infektionen</text>
<text x='20' y='95' style='fill:#FF6600;'>Genesene</text>
<text x='20' y='110' style='fill:#770000;'>Todesfälle</text>
</g>\n";
echo "</svg>\n";
?>
includes/zeitreihe_impfungen.php<?php
echo "<svg width='$svg_laenge' height='$svg_hoehe' transform='scale(" . 1 / $faktor . ")'>\n";
echo "<g id='plot3' transform='translate($x_offset,0)'>\n";
# x-Achse unten
echo "<line x1='0' y1='400' x2='" . $z * 2 . "' y2='400' style='stroke-width:2'/>\n";
echo "<g id='plot2' transform='translate(0,400)'>\n";
echo "<g style='stroke-width:1;'>";
$z = 0;
$max_f_ges = 100000;
foreach ( $neues_array as $datensatz ) {
$wert_f = round((-400 * floatval($datensatz[$liste_kopffelder["total_cases_per_million"]] / 10) / $max_f_ges), 1);
$wert_g = round((-400 * floatval($datensatz[$liste_kopffelder["Genesene_ppm"]] / 10) / $max_f_ges), 1);
$wert_t = round((-400 * floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]] / 10) / $max_f_ges), 1);
$wert_i1 = round((-400 * floatval($datensatz[$liste_kopffelder["people_vaccinated_per_hundred"]] * 1000) / $max_f_ges), 1);
$wert_i2 = round((-400 * floatval($datensatz[$liste_kopffelder["people_fully_vaccinated_per_hundred"]] * 1000) / $max_f_ges), 1);
$pos_x = $z * $s + 3;
$pos_x_2 = $pos_x + 1;
echo "<line x1='$pos_x' y1='0' x2='$pos_x' y2='$wert_f' class='l_gf'/>\n"; # Linie zeichnen (Fälle)
echo "<line x1='$pos_x' y1='0' x2='$pos_x' y2='$wert_g' class='l_gen'/>\n"; # Linie zeichnen (Genesene)
echo "<line x1='$pos_x' y1='0' x2='$pos_x' y2='$wert_t' class='l_gt'/>\n"; # Linie zeichnen (Tote)
echo "<line x1='$pos_x_2' y1='0' x2='$pos_x_2' y2='$wert_i1' class='l_i'/>\n"; # Linie zeichnen (1. Impfung)
echo "<line x1='$pos_x_2' y1='0' x2='$pos_x_2' y2='$wert_i2' class='l_gi'/>\n"; # Linie zeichnen (vollständig geimpft)
// Datum
# Wenn die letzten beiden Zeichen des Datumswertes "01" sind
if ( substr($datensatz[$liste_kopffelder["date"]], 8, 2) == "01" ){
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text x='" . ( $z * 2 - 3 ) . "' y='10' transform='rotate(70," . ( $z * 2 - 3 ) . ",10)'>" . date("M y", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . $z * 2 . "' y1='0' x2='" . $z * 2 . "' y2='5' />\n";
}
$z++;
}
echo "</g>";
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f_ges));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
$interval_skala = pow(10, ($laenge - 1));
// Hauptlinien
for ( $a = 1; $a <= 10; $a++ ) {
echo "<line x1='0' y1='" . round(( -400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' x2='$svg_laenge' y2='" . round(( -400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round(( 5 - 400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' text-anchor='end' style='fill:#000000;'>" . number_format($a * 10 , 0,",",".") . " %</text>\n";
}
echo "</g>\n";
//Legende3
echo "
<g id='legende3' transform='translate(" . ( $x_offset + 50 ) . ",0)'>
<rect x='0' y='40' rx='8' ry='8' width='200' height='115' style='stroke:#000000; fill:#FFFFFF; stroke-width:2; fill-opacity:0.8' />
<text x='10' y='60'>Legende</text>
<text x='20' y='80' style='fill:#22AA22;font-size:14;'>Erstimpfung</text>
<text x='20' y='95' style='fill:#007700;font-size:14;'>Vollständige Impfung</text>
<text x='20' y='110' style='fill:#2222AA;font-size:14;'>Aktive Infektionen</text>
<text x='20' y='125' style='fill:#FF6600;font-size:14;'>Genesene</text>
<text x='20' y='140' style='fill:#AA2222;font-size:14;'>Todesfälle</text>
</g>\n";
echo "</svg>\n";
?>
includes/zeitreihe_neuinfektionen_gesamt.php<?php
# Maximum ermitteln
$max_f = max(array_column($neues_array, $liste_kopffelder["GD_Faelle_neu_14_ppm"])) * 1.05;
$max_t = max(array_column($neues_array, $liste_kopffelder["GD_Tote_neu_14_ppm"])) * 1.05;
$max_i = max(array_column($neues_array, $liste_kopffelder["GD_Impfungen_14_ppm"])) * 1.05;
# Faktoren für die Skalierung ermitteln
$FI = $max_i / $max_f;
$FI_stellen = floor(log10($FI));
$FI_ziffer1 = str_split($FI)[0];
$faktor_impfungen = ($FI_ziffer1 + 1) * pow(10, $FI_stellen);
# wenn der Faktor 0 ist auf Standard-Wert setzen
if ($faktor_impfungen == 0) {$faktor_impfungen = 25;}
$FT = $max_f / $max_t;
if ( $FT > 100 ) {
$faktor_tote = floor($FT - ($FT % 100)) / 2;
} else {
$faktor_tote = floor($FT - ($FT % 10)) / 2;
}
if ($faktor_tote == 0) {$faktor_tote = 25;}
#echo "<p>max_f: $max_f max_t: $max_t FT: $FT - Stellen: $FT_stellen - 1. Ziffer: $FT_ziffer1 - $FT2 - $FT2i</p>";
echo "<!-- Neuinfektionen -->\n\n";
echo "<svg width='$svg_laenge' height='$svg_hoehe' transform='scale(" . 1 / $faktor . ")'>\n";
echo "<g id='plot1' transform='translate($x_offset, 0)'>\n";
# X-Achse
echo Linie(0,400,$svg_laenge,400,"","stroke:#000000; stroke-width:2");
$z = 0;
$wert_f3_tmp = 400;
$wert_t3_tmp = 400;
$wert_i3_tmp = 400;
foreach ( $neues_array as $datensatz ) {
# Die Y-Koordniate ergibt sich aus der Höhe der Grafik minus Dem Anteil des Wertes am Maximalwert
$wert_f = round(400 - 400 * floatval($datensatz[$liste_kopffelder["new_cases_per_million"]] / $max_f), 1);
$wert_t = round(400 - 400 * floatval($datensatz[$liste_kopffelder["new_deaths_per_million"]] * $faktor_tote / $max_f), 1);
$wert_i = round(400 - 400 * floatval($datensatz[$liste_kopffelder["new_vaccinations"]] / floatval($datensatz[$liste_kopffelder["population"]]) * ( 1000000 / $faktor_impfungen ) / $max_f ), 1) ;
$wert_f3 = round(400 - 400 * floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_ppm"]] / $max_f), 1);
$wert_t3 = round(400 - 400 * floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_ppm"]] * $faktor_tote / $max_f), 1);
$wert_i3 = round(400 - 400 * floatval($datensatz[$liste_kopffelder["GD_Impfungen_14_ppm"]] / $faktor_impfungen / $max_f), 1);
$pos_x = $z * $s + 3;
$pos_x_2 = $pos_x + 1;
# Linie zeichnen (Fälle)
echo Linie($pos_x,400,$pos_x,$wert_f,"l_f","");
# Linie zeichnen (Tote)
echo Linie($pos_x,400,$pos_x,$wert_t,"l_t","");
# Linie zeichnen (Impfungen)
echo Linie($pos_x_2,400,$pos_x_2,$wert_i,"l_i","");
# Linie zeichnen (gleitender Durchschnitt Fälle)
echo Linie($pos_x_2,$wert_f3,$z_tmp,$wert_f3_tmp,"l_gf","");
# Linie zeichnen (gleitender Durchschnitt Tote)
echo Linie($pos_x_2,$wert_t3,$z_tmp,$wert_t3_tmp,"l_gt","");
//if ( $wert_i == 0 && $wert_i_tmp == 0 ) {} else {
# Linie zeichnen (gleitender Durchschnitt Impfungen)
echo Linie($pos_x_2,$wert_i3,$z_tmp,$wert_i3_tmp,"l_gi","");
//}
$z_tmp = $z * $s + 4;
$wert_f3_tmp = $wert_f3;
$wert_t3_tmp = $wert_t3;
$wert_i3_tmp = $wert_i3;
// Datum
# Wenn die letzten beiden Zeichen des Datumswertes "01" sind
if (substr($datensatz[$liste_kopffelder["date"]], 8, 2) == "01"){
# Datum zeichnen, um 90 ° im UZS gedreht
echo Text($z * 2 - 3,410,"","",date("M y",strtotime($datensatz[$liste_kopffelder["date"]])),"rotate(70," . ( $z * 2 - 3 ) . ",410)");
# Skalenstrich zeichnen
echo Linie($z * 2,400,$z * 2,405,"","");
}
$z++;
}
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
# alternativ: interval_skala=ceil(log10($zahl);
$interval_skala = pow(10, ($laenge - 1));
// Hauptlinien
# Formatierungen für die Legende
echo "<g text-anchor='end' style='font-size:80%;stroke-width:1;'>\n";
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
$const1 = round((400 - 400 * $a * $interval_skala / $max_f ), 1);
$const2 = round((405 - 400 * $a * $interval_skala / $max_f ), 1);
echo Linie(0, $const1, $svg_laenge, $const1, "", "stroke:#555555;", "");
echo Text(-2, $const2, "", "fill:#0000FF;", $a * $interval_skala, "");
echo Text(-2, $const2 + 12, "", "fill:#FF0000;", round($a * $interval_skala / $faktor_tote, 0),"");
echo Text(-2, $const2 + 24, "", "fill:#007700;", $a * $interval_skala * $faktor_impfungen, 0,"");
// Hilflinien
# wenn es weniger als 3 Skalenstriche gibt
if ( $anzahl_skalenteile < 3 ){
$const1 = round((400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1);
$const2 = round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1);
echo Linie(0, $const1, $svg_laenge, $const1, "", "stroke:#555555;");
echo Text(-2, $const2, "", "fill:#0000FF;", $a * $interval_skala - $interval_skala / 2, "");
echo Text(-2, $const2 + 12, "", "fill:#FF0000;", round(( $a * $interval_skala - $interval_skala / 2 ) / $faktor_tote, 0), "");
echo Text(-2, $const2 + 24, "", "fill:#007700;", ( $a * $interval_skala - $interval_skala / 2 ) * $faktor_impfungen, "");
$const3 = round((400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ), 1);
$const4 = round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ), 1);
echo Linie(0, $const3, $svg_laenge, $const3, "", "stroke:#555555;");
echo Text(-2, $const4, "", "fill:#0000FF;", $a * $interval_skala + $interval_skala / 2, "");
echo Text(-2, $const4 + 12, "", "fill:#FF0000;", round(( $a * $interval_skala + $interval_skala / 2 ) / $faktor_tote, 0), "");
echo Text(-2, $const4 + 24, "", "fill:#007700;", ( $a * $interval_skala + $interval_skala / 2 ) * $faktor_impfungen, "");
}
}
echo "</g>\n";
echo Text(12 - $x_offset,330,"","fill:#000000;","[Je Million Einwohner pro Tag]","rotate(-90," . ( 12 - $x_offset ) . ",330)");
echo "</g>\n";
// Legende1
echo "
<g id='legende1' transform='translate(" . ( $x_offset + 50 ) . ",0)'>
<rect x='0' y='40' rx='8' ry='8' width='260' height='125' style='stroke:#000000; fill:#FFFFFF; stroke-width:2; fill-opacity:0.8' />
<text x='20' y='60' class='legende'>Legende</text>
<line x1='15' y1='76' x2='25' y2='76' style='stroke:#6666FF; stroke-width:2'/>
<text x='30' y='80' style='fill:#6666FF'>Neuinfektionen</text>
<line x1='15' y1='91' x2='25' y2='91' class='gd' style='stroke:#000088;'/>
<text x='30' y='95' class='gd' style='fill:#000077;'>gleitender Durchschnitt (14 Tage)</text>
<line x1='15' y1='106' x2='25' y2='106' style='stroke:#FF6666; stroke-width:2'/>
<text x='30' y='110' style='fill:#FF6666;'>Todesfälle</text>
<line x1='15' y1='121' x2='25' y2='121' class='gd' style='stroke:#770000;'/>
<text x='30' y='125' class='gd' style='fill:#770000;'>gleitender Durchschnitt (14 Tage)</text>
<line x1='15' y1='136' x2='25' y2='136' style='stroke:#22AA22; stroke-width:2'/>
<text x='30' y='140' style='fill:#22AA22;'>Impfungen</text>
<line x1='15' y1='151' x2='25' y2='151' class='gd' style='stroke:#007700;'/>
<text x='30' y='155' class='gd' style='fill:#007700;'>gleitender Durchschnitt (14 Tage)</text>
</g>\n";
echo "</svg>\n\n";
?>
zeitreihen_tabellen.php<?php
include ("./includes/header.php");
$land_akt = $laenderverweis;
// der Inhalt
$grenzwert = 0.1;
?>
<h3>Übersicht für <?=$liste_laender_iso_de["$laenderverweis"]?></h3>
<p><a href="zeitreihen_diagramme.php?vland=<?=$laenderverweis?>&vseite=zeitreihen_diagramme">zum den Diagrammen</a></p>
<table>
<thead>
<tr>
<th></th>
<th colspan='2'>Trend</th>
<th class='tab_faelle' colspan='4'>Infektionen</th>
<th class='tab_tote' colspan='4'>Todesfälle</th>
<th class='tab_impf' colspan='2'>Impfquote %</th>
</tr>
<tr>
<th class='tab_datum'>Kalender-<br>woche</th>
<th class='tab_trend'>14 Tage</th>
<th class='tab_trend'>28 Tage</th>
<th class='tab_faelle'>Neu</th>
<th class='tab_faelle'>je Million</th>
<th class='tab_faelle'>Gesamt</th>
<th class='tab_faelle'>je Million</th>
<th class='tab_tote'>Neu</th>
<th class='tab_tote'>je Million</th>
<th class='tab_tote'>Gesamt</th>
<th class='tab_tote'>je Million</th>
<th class='tab_impf'>1. Impfung</th>
<th class='tab_impf'>vollständig</th>
</tr>
</thead>
<tbody>
<?
# neues Array erzeugen, in dem nur die Werte der aktuellen Region stehen
# umkehren, damit die neuesten Werte oben angezeigt werden
$neues_array = array_reverse(filter_land());
foreach ($neues_array as $datensatz) {
#echo("\n<p>" . date("N", strtotime($array[3]) . "</p>"));
$xp = true;
if (date("N", strtotime($datensatz[$liste_kopffelder["date"]])) == "1"){
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_14"]]), 2) > $grenzwert ) { $klasse1='pos'; $pfeil1='↗'; } elseif ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_14"]]), 2) < -$grenzwert ) { $klasse1='neg'; $pfeil1='↘'; } else { $klasse1='neutr'; $pfeil1='→'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_28"]]), 2) > $grenzwert ) { $klasse2='pos'; $pfeil2='↗'; } elseif ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_28"]]), 2) < -$grenzwert ) { $klasse2='neg'; $pfeil2='↘'; } else { $klasse2='neutr'; $pfeil2='→'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_14"]]), 2) > $grenzwert * 10 ) { $pfeil1 = '↑'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_14"]]), 2) < -$grenzwert * 10 ) { $pfeil1 = '↓'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_28"]]), 2) > $grenzwert * 10 ) { $pfeil2 = '↑'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_28"]]), 2) < -$grenzwert * 10 ) { $pfeil2 = '↓'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_14"]]), 2) > $grenzwert * 100 ) { $pfeil1 = '↑↑'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_14"]]), 2) < -$grenzwert * 100 ) { $pfeil1 = '↓↓'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_28"]]), 2) > $grenzwert * 100 ) { $pfeil2 = '↑↑'; }
if ( -number_format(floatval($datensatz[$liste_kopffelder["GD_7_Trend_28"]]), 2) < -$grenzwert * 100 ) { $pfeil2 = '↓↓'; }
echo "<tr class='zeilen'><td class='tab_datum'>" . date("W", strtotime($datensatz[$liste_kopffelder["date"]])) . "/" . date("Y", strtotime($datensatz[$liste_kopffelder["date"]])) . "</td>
<td class='tab_trend_$klasse1'>" . number_format(-floatval($datensatz[$liste_kopffelder["GD_7_Trend_14"]]), 2) . " $pfeil1</td>
<td class='tab_trend_$klasse2'>" . number_format(-floatval($datensatz[$liste_kopffelder["GD_7_Trend_28"]]), 2) . " $pfeil2</td>
<td class='tab_faelle'>" . number_format(intval($datensatz[$liste_kopffelder["Sum_Faelle_neu_7_abs"]]), 0, ",", ".") . "</td>
<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["Sum_Faelle_neu_7_ppm"]]), 2, ",", ".") . "</td>
<td class='tab_faelle'>" . number_format(intval($datensatz[$liste_kopffelder["total_cases"]]), 0, ",", ".") . "</td>
<td class='tab_faelle'>" . number_format(floatval($datensatz[$liste_kopffelder["total_cases_per_million"]]), 0, ",", ".") . "</td>
<td class='tab_tote'>" . number_format(intval($datensatz[$liste_kopffelder["Sum_Tote_neu_7_abs"]]), 0, ",", ".") . "</td>
<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["Sum_Tote_neu_7_ppm"]]), 2, ",", ".") . "</td>
<td class='tab_tote'>" . number_format(intval($datensatz[$liste_kopffelder["total_deaths"]]), 0, ",", ".") . "</td>
<td class='tab_tote'>" . number_format(floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]]), 2, ",", ".") . "</td>
<td class='tab_impf'>" . number_format(floatval($datensatz[$liste_kopffelder["people_vaccinated_per_hundred"]]), 2, ",", ".") . "</td>
<td class='tab_impf'>" . number_format(floatval($datensatz[$liste_kopffelder["people_fully_vaccinated_per_hundred"]]), 2, ",", ".") . "</td>
</tr>\n";
}
}
echo "</tbody>\n</table>\n";
echo "<p>Trend als Änderung der Infektionsrate in Fälle je Millionen Einwohner pro Tag</p>";
echo "<br/>
<table>
<tr>
<td class='tab_trend_pos'>↑↑</td>
<td>Trend größer als " . $grenzwert * 100 . "</td>
</tr>
<tr>
<td class='tab_trend_pos'>↑</td>
<td>Trend größer als " . $grenzwert * 10 . "</td>
</tr>
<tr>
<td class='tab_trend_pos'>↗</td>
<td>Trend größer als $grenzwert</td>
</tr>
<tr>
<td class='tab_trend_neutr'>→</td>
<td>Trend zwischen $grenzwert und -$grenzwert</td>
</tr>
<tr>
<td class='tab_trend_neg'>↘</td>
<td>Trend kleiner als -$grenzwert</td>
</tr>
<tr>
<td class='tab_trend_neg'>↓</td>
<td>Trend kleiner als " . -$grenzwert * 10 . "</td>
</tr>
<tr>
<td class='tab_trend_neg'>↓↓</td>
<td>Trend kleiner als " . -$grenzwert * 100 . "</td>
</tr>
</table>\n</br>";
// der Fußteil
include ("./includes/footer.php");
?>
zeitreihen_diagramme.php<?php
$faelle_tmp = 0;
$tote_tmp = 0;
include ("./includes/header.php");
# Streckung der Werte
$s = 2;
# Faktor für die Skalierung der Diagramme
$faktor = 1;
# Faktor für die Skalierung von Impfungen zu Infektionen
$faktor_impfungen = 40;
$land_akt = $laenderverweis;
# Land filtern
if ( $vis == "1" ) { $neues_array = filter_land(); }
if ( $vis == "2" ) { $neues_array = filter_datum_land(365); }
if ( $vis == "3" ) { $neues_array = filter_datum_land(182); }
# linker Rand
$x_offset = 80;
# Länge der SVG-Datei
$svg_laenge = count($neues_array) * $s + $x_offset + 10;
# Höhe der SVG-Datei
$svg_hoehe = 500;
// Diagramm 1 - Neuinfektionen
if ( $vis == "1" ) { $text = "seit Beginn der Pandemie"; }
if ( $vis == "2" ) { $text = "der letzten 12 Monate"; }
if ( $vis == "3" ) { $text = "der letzten 6 Monate"; }
echo "<h2>Verlauf " . $text . " für " . $liste_laender_iso_de["$laenderverweis"] . "</h2>\n";
echo "<!-- Neuinfektionen -->\n\n";
echo "<h3>Neuinfektionen, Todesfälle und Impfungen (Infektionsrate, Sterberate, Impfrate)</h3>\n";
# Modul Neuinfektionen
include ("./includes/zeitreihe_neuinfektionen_gesamt.php");
// Diagramm 2 - Gesamtinfektionen
echo "<!-- Gesamtinfektionen 1 -->\n\n";
echo "<h3>Aktive Infektionen, Genesene und Todesfälle im Vergleich</h3>\n";
# Modul Gesamtinfektionen
include ("./includes/zeitreihe_gesamtinfektionen.php");
// Diagramm 3 - aktive Infektionen
echo "<!-- aktive Infektionen -->\n\n";
echo "<h3>Aktive Infektionen</h3>\n";
# Modul aktive Infektionen
include ("./includes/zeitreihe_aktive_infektionen.php");
// Diagramm 4 - Impfungen
echo "<!-- Impfungen -->\n\n";
echo "<h3>Gesamtinfektionen, Todesfälle und Impfungen im Vergleich</h3>\n";
# Modul Impfungen
include ("./includes/zeitreihe_impfungen.php");
// Diagramm 5 - Differential
echo "<!-- Differential -->\n\n";
echo "<h3>Veränderung der Infektionsrate (bezogen auf den 14-Tage-Mittelwert)</h3>\n";
# Modul Differential
include ("./includes/zeitreihe_differential.php");
// der Fußteil
include ("./includes/footer.php");
?>
zeitreihen_diagramme_4wochen.php<?php
// Was ändert sich? Länge der Grafik, Breite der Linien, Streckung
include ("./includes/header.php");
# Streckung der Werte
$s = 20;
$land_akt = $laenderverweis;
$neues_array = filter_datum_land(28);
// der Inhalt
$x2_offset = 210;
$x_offset = 80;
$diagramm_laenge = count($neues_array) * $s;
# Länge der SVG-Datei
$svg_laenge = $diagramm_laenge + $x_offset + $x2_offset;
# Höhe der SVG-Datei
$svg_hoehe = 500;
$offset_legende = $diagramm_laenge + $x_offset + 20;
# Maximum ermitteln
$max_f = max(array_column($neues_array, 9)); # Fälle
$max_f_ges = max(array_column($neues_array, 8)); # Fälle kumuliert
$max_t = max(array_column($neues_array, 48)); # Tote
$max_i = max(array_column($neues_array, 55)); # Impfungen
$FT = $max_f / $max_t;
if ( $FT > 100 ) {
$faktor_tote = floor($FT - ($FT % 100)) / 2;
} else {
$faktor_tote = floor($FT - ($FT % 10)) / 2;
}
if ($faktor_tote == 0) {$faktor_tote = 25;}
# Faktoren für die Skalierung ermitteln
$FI = $max_i / $max_f;
$FI_stellen = floor(log10($FI));
$FI_ziffer1 = str_split($FI)[0];
$faktor_impfungen = ($FI_ziffer1 + 1) * pow(10, $FI_stellen);
#echo "Faktor Impfungen: " . $faktor_impfungen;
# wenn der Faktor 0 ist auf Standard-Wert setzen
if ($faktor_impfungen == 0) {$faktor_impfungen = 25;}
if ($faktor_impfungen < 1) {$faktor_impfungen = 1;}
#echo "Faktor Impfungen: " . $faktor_impfungen;
echo "<h2>Verlauf der letzten 4 Wochen für " . $liste_laender_iso_de["$laenderverweis"] . "</h2>\n";
// Neuinfektionen
echo "<h3>Neuinfektionen, Todesfälle und Impfungen (Infektionsrate, Sterberate, Impfrate) </h3>\n";
echo "<svg id='svg_fl' width='$svg_laenge' height='500'>\n";
echo "<g id='plot1' transform='translate($x_offset,0)'>\n";
# X-Achse unten
echo "<line x1='0' y1='400' x2='$diagramm_laenge' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
$z = 0;
# Pointer des Array zurück setzen
reset($neues_array);
# aktuellen Wert (erster Wert) ausgeben
$ar_tmp = current($neues_array);
$wert_f3_tmp = round((400 - 400 * (floatval($ar_tmp[$liste_kopffelder["GD_Faelle_neu_14_ppm"]])) / $max_f), 1);
$wert_t3_tmp = round((400 - 400 * (floatval($ar_tmp[$liste_kopffelder["GD_Tote_neu_14_ppm"]]) * $faktor_tote) / $max_f), 1);
$wert_i3_tmp = round((400 - 400 * (floatval($ar_tmp[$liste_kopffelder["GD_Impfungen_14_ppm"]]) / $faktor_impfungen) / $max_f), 1);
$z_tmp = $z * $s + 7;
foreach ( $neues_array as $datensatz ) {
$wert_f = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["new_cases_per_million"]]) / $max_f)), 1);
$wert_t = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["new_deaths_per_million"]]) * $faktor_tote) / $max_f), 1);
$wert_i = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["new_vaccinations"]] / floatval($datensatz[$liste_kopffelder["population"]]) * (1000000 / $faktor_impfungen)) / $max_f)), 1);
# Die Y-Koordniate ergibt sich aus der Höhe der Grafik minus Dem Anteil des Wertes am Maximalwert
$wert_f3 = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_ppm"]])) / $max_f), 1);
$wert_t3 = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_ppm"]]) * $faktor_tote) / $max_f), 1);
$wert_i3 = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["GD_Impfungen_14_ppm"]]) / $faktor_impfungen) / $max_f), 1);
# Linie zeichnen (Fälle)
echo "<line x1='" . ( $z * $s + 3 ) . "' y1='400' x2='" . ( $z * $s + 3 ) . "' y2='$wert_f' style='stroke:#6666FF; stroke-width:5' />\n";
# Linie zeichnen (Tote)
echo "<line x1='" . ( $z * $s + 8 ) . "' y1='400' x2='" . ( $z * $s + 8 ) . "' y2='$wert_t' style='stroke:#FF6666; stroke-width:5' />\n";
# Linie zeichnen (Impfungen)
echo "<line x1='" . ( $z * $s + 12 ) . "' y1='400' x2='" . ( $z * $s + 12 ) . "' y2='$wert_i' style='stroke:#007700; stroke-width:5'/>\n";
# Linie zeichnen (gleitender Durchschnitt Fälle)
echo "<line x1='" . ( $z * $s + 7 ) . "' y1='$wert_f3' x2='$z_tmp' y2='$wert_f3_tmp' style='stroke:#000077; stroke-width:6' />\n";
# Linie zeichnen (gleitender Durchschnitt Tote)
echo "<line x1='" . ( $z * $s + 7 ) . "' y1='$wert_t3' x2='$z_tmp' y2='$wert_t3_tmp' style='stroke:#770000; stroke-width:5' />\n";
//if ( $wert_i == 0 && $wert_i_tmp == 0 ) {} else {
# Linie zeichnen (gleitender Durchschnitt Impfungen)
echo "<line x1='" . ( $z * $s + 7 ) . "' y1='$wert_i3' x2='$z_tmp' y2='$wert_i3_tmp' class='l_gi' style='stroke-width:5;' />\n";
//}
$z_tmp = $z * $s + 7;
$wert_f3_tmp = $wert_f3;
$wert_t3_tmp = $wert_t3;
$wert_i3_tmp = $wert_i3;
// Datum
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text x='" . ($z * $s + 3) . "' y='410' style='fill:#000000;' transform='rotate(90," . ($z * $s + 3) . ",410)'>" . date("d.M", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ($z * $s + 7) . "' y1='400' x2='" . ($z * $s + 7) . "' y2='405' style='stroke:#000000;' />\n";
$index = $x;
$z++;
}
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
# alternativ: interval_skala=ceil(log10($zahl);
$interval_skala = pow(10, ($laenge - 1));
# Hauptlinien zeichnen
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((400 - 400 * $a * $interval_skala / $max_f ), 1) . "' x2='$diagramm_laenge' y2='" . round((400 - 400 * $a * $interval_skala / $max_f), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * $a * $interval_skala / $max_f), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . $a * $interval_skala . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * $a * $interval_skala / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . round($a * $interval_skala / $faktor_tote, 2) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * $a * $interval_skala / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#007700;font-size:80%;'>" . $a * $interval_skala * $faktor_impfungen . "</text>\n";
# Hilflinien zeichnen
# wenn es weniger als 3 Skalenstriche geben würde
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . round(( $a * $interval_skala - $interval_skala / 2 ) / $faktor_tote, 2) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#007700;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) * $faktor_impfungen . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) . "' x2='$diagramm_laenge' y2='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala + $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . round(( $a * $interval_skala + $interval_skala / 2 ) / $faktor_tote, 2) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#007700;font-size:80%;'>" . ( $a * $interval_skala + $interval_skala / 2 ) * $faktor_impfungen . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
echo "</g>\n";
// Legende1
echo "\n<g id='legende1' transform='translate($offset_legende,50)'>
<rect x='0' y='40' rx='8' ry='8' width='170' height='100' style='stroke:#000000; fill:#FFEECC; stroke-width:2; fill-opacity:0.8' />
<text x='20' y='60' style='fill:#000000'>Legende</text>
<text x='30' y='80' style='fill:#0000FF'>Neuinfektionen</text>
<text x='30' y='100' style='fill:#FF0000'>Todesfälle</text>
<text x='30' y='120' style='fill:#007700'>Impfungen</text>
</g>\n";
echo "</svg>\n\n";
// Regression
# Summe der X-Werte (1 - 28)
$summe_x = array_sum(range(1, 28));
# Summe der y-Werte (Fälle)
$summe_y_f = array_sum(array_column($neues_array, 9));
# Summe der y-Werte (Tote)
$summe_y_t = array_sum(array_column($neues_array, 11));
# Mittelwert der X-Werte
$x_quer = $summe_x / 28;
# Mittelwert der Y-Werte (Fälle)
$y_quer_f = $summe_y_f / 28;
# Mittelwert der Y-Werte (Tote)
$y_quer_t = $summe_y_t / 28;
$xi = 1;
# Für jeden Datensetz
foreach ($neues_array as $datensatz) {
$yi_f = $datensatz[$liste_kopffelder["new_cases_per_million"]];
$yi_t = $datensatz[$liste_kopffelder["new_deaths_per_million"]];
$summe_xx += ( $xi - $xquer ) * ( $xi - $xquer );
$summe_xy2_f += $xi * $yi_f;
$summe_xy2_t += $xi * $yi_t;
$xi++;
}
# Berechnung des Regressionskoeffizienten für die Fälle
$anstieg_f = ($summe_xy2_f - 28 * $x_quer * $y_quer_f) / ($summe_xx - 28 * $x_quer * $x_quer);
# Berechnung des Regressionskoeffizienten für die Todefälle
$anstieg_t = ($summe_xy2_t - 28 * $x_quer * $y_quer_t) / ($summe_xx - 28 * $x_quer * $x_quer);
$abschnitt_f = $y_quer_f - ( $anstieg_f * $x_quer );
$abschnitt_t = $y_quer_t - ( $anstieg_t * $x_quer );
// Determinationskoeffizient
$xi = 1;
foreach ($neues_array as $datensatz) {
$yi_f = $datensatz[$liste_kopffelder["new_cases_per_million"]];
$yi_t = $datensatz[$liste_kopffelder["new_deaths_per_million"]];
$yi_f_erwartet = $xi * $anstieg_f + $abschnitt_f;
$yi_t_erwartet = $xi * $anstieg_t + $abschnitt_t;
$sqr_f += pow($yi_f - $yi_f_erwartet, 2);
$sqr_t += pow($yi_t - $yi_t_erwartet, 2);
$sqt_f += pow($yi_f - $y_quer, 2);
$sqt_t += pow($yi_t - $y_quer, 2);
$xi++;
}
$r2_f = 1 - $sqr_f / $sqt_f;
$r2_t = 1 - $sqr_t / $sqt_t;
echo "<h3>Lineare Regression</h3>";
echo "<svg id='svg_fl' width='" . ( $svg_laenge + 100 ) . "' height='500'>\n";
echo "<g id='plot1' transform='translate($x_offset,0)'>\n";
// Skalierung
# x-Achse unten
echo "<line x1='0' y1='400' x2='$diagramm_laenge' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
# Hauptlinien zeichnen
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round(( 400 - 400 * $a * $interval_skala / $max_f ), 1) . "' x2='$diagramm_laenge' y2='" . round((400 - 400 * $a * $interval_skala / $max_f), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round(( 405 - 400 * $a * $interval_skala / $max_f ), 1) . "' text-anchor='end' style='fill:#6666FF;font-size:90%;'>" . $a * $interval_skala . "</text>\n";
echo "<text x='-2' y='" . round(( 405 - 400 * $a * $interval_skala / $max_f ) + 15, 1) . "' text-anchor='end' style='fill:#FF6666;font-size:90%;'>" . round($a * $interval_skala / $faktor_tote, 2) . "</text>\n";
# Hilflinien zeichnen
# wenn es weniger als 3 Skalenstriche geben würde
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' x2='$diagramm_laenge' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round(( 405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#6666FF;font-size:90%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . round(( 405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) + 15, 1) . "' text-anchor='end' style='fill:#FF6666;font-size:90%;'>" . round(( $a * $interval_skala - $interval_skala / 2 ) / $faktor_tote, 2) . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) . "' x2='$diagramm_laenge' y2='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round(( 405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#6666FF;font-size:90%;'>" . ( $a * $interval_skala + $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . round(( 405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) + 15, 1) . "' text-anchor='end' style='fill:#FF6666;font-size:90%;'>" . round(( $a * $interval_skala + $interval_skala / 2 ) / $faktor_tote, 2) . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
$z = 0;
reset($neues_array);
$ar_tmp = current($neues_array);
$wert_f3_tmp = round((400 - 400 * (floatval($ar_tmp[$liste_kopffelder["GD_Faelle_neu_14_ppm"]])) / $max_f), 1);
$wert_t3_tmp = round((400 - 400 * (floatval($ar_tmp[$liste_kopffelder["GD_Tote_neu_14_ppm"]]) * $faktor_tote) / $max_f), 1);
$z_tmp=0;
foreach ( $neues_array as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["new_cases_per_million"]]);
$wert_t = floatval($datensatz[$liste_kopffelder["new_deaths_per_million"]]) * $faktor_tote;
# Die Y-Koordniate ergibt sich aus der Höhe der Grafik minus Dem Anteil des Wertes am Maximalwert
$wert_f3 = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_ppm"]])) / $max_f), 1);
$wert_t3 = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_ppm"]]) * $faktor_tote) / $max_f), 1);
echo "<circle cx='" . ($z * $s + 3) . "' cy='" . round((400 - 400 * $wert_f / $max_f), 1) . "' r='4' style='fill:#6666FF;' />\n";
echo "<circle cx='" . ($z * $s + 10) . "' cy='" . round((400 - 400 * $wert_t / $max_f), 1) . "' r='4' style='fill:#FF6666;' />\n";
$z_tmp = $z * $s;
$wert_f3_tmp = $wert_f3;
$wert_t3_tmp = $wert_t3;
// Datum
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text x='" . ($z * $s + 3) . "' y='410' style='fill:#000000;' transform='rotate(90," . ($z * $s + 3) . ",410)'>" . date("d.M", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ($z * $s + 7) . "' y1='400' x2='" . ($z * $s + 7) . "' y2='405' style='stroke:#000000;' />\n";
$index = $x;
$z++;
}
// Regressionsgeraden
echo "<line x1='5' y1='" . round((400 - 400 * ($anstieg_f + $abschnitt_f) / $max_f), 1) . "' x2='" . ($z * $s - 10) . "' y2='" . round((400 - 400 * ( 28 * $anstieg_f + $abschnitt_f ) / $max_f), 1) . "' style='stroke:#000066;stroke-width:3px;' />\n";
echo "<line x1='5' y1='" . round((400 - 400 * ($anstieg_t + $abschnitt_t) * $faktor_tote / $max_f), 1) . "' x2='" . ($z * $s - 10) . "' y2='" . round((400 - 400 * ( 28 * $anstieg_t + $abschnitt_t ) * $faktor_tote / $max_f), 1) . "' style='stroke:#660000;stroke-width:3px;' />\n";
echo "</g>\n";
echo "<text x='" . $offset_legende . "' y='250' style='fill:#000066;'>Trendlinie: y = " . number_format($anstieg_f, 3, ",",".") . "x + " . number_format($abschnitt_f, 2, ",",".") . "</text>";
echo "<text x='" . ($offset_legende + 105) . "' y='270' style='fill:#000066;'>R² = " . number_format($r2_f, 4, ",",".") . "</text>";
echo "<text x='" . ($offset_legende + 105) . "' y='290' style='fill:#000066;'>R = " . number_format(sqrt($r2_f), 4, ",",".") . "</text>";
echo "<text x='" . $offset_legende . "' y='330' style='fill:#660000;'>Trendlinie: y = " . number_format($anstieg_t, 3, ",",".") . "x + " . number_format($abschnitt_t, 2, ",",".") . "</text>";
echo "<text x='" . ($offset_legende + 105) . "' y='350' style='fill:#660000;'>R² = " . number_format($r2_t, 4, ",",".") . "</text>";
echo "<text x='" . ($offset_legende + 105) . "' y='370' style='fill:#660000;'>R = " . number_format(sqrt($r2_t), 4, ",",".") . "</text>";
// Legende
echo "\n<g id='legende2' transform='translate($offset_legende,50)'>
<rect x='0' y='35' rx='8' ry='8' width='170' height='80' style='stroke:#000000; fill:#FFEECC; stroke-width:2; fill-opacity:0.8' />
<text x='20' y='60' style='fill:#000000'>Legende</text>
<text x='30' y='80' style='fill:#0000FF'>Neuinfektionen</text>
<text x='30' y='100' style='fill:#ff0000'>Todesfälle</text>
</g>\n";
echo "</svg>\n\n";
// Gesamtinfektionen1
echo "<!-- Gesamtinfektionen 1 -->\n\n";
echo "<h3>Aktive Infektionen, Genesene und Todesfälle im Vergleich</h3>\n";
echo "<svg width='$svg_laenge' height='500'>\n";
echo "<g id='plot2' transform='translate($x_offset,0)'>\n";
# X-Achse unten
echo "<line x1='0' y1='400' x2='$diagramm_laenge' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f_ges));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
$interval_skala = pow(10, ($laenge - 1));
# Hauptlinien zeichnen
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((400 - 400 * $a * $interval_skala / $max_f_ges), 1) . "' x2='$diagramm_laenge' y2='" . round((400 - 400 * $a * $interval_skala / $max_f_ges), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * $a * $interval_skala / $max_f_ges), 1) . "' text-anchor='end' style='fill:#000000;'>" . number_format($a * $interval_skala, 0,",",".") . "</text>\n";
# Hilflinien zeichnen
# wenn es weniger als 3 Skalenstriche geben würde
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f_ges ) . "' text-anchor='end' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f_ges ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . ( 405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f_ges ) . "' text-anchor='end' style='fill:#000000'>" . number_format(($a * $interval_skala - $interval_skala / 2), 0,",",".") . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f_ges ) . "' text-anchor='end' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f_ges ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . ( 405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f_ges ) . "' text-anchor='end' style='fill:#000000'>" . number_format(($a * $interval_skala + $interval_skala / 2), 0,",",".") . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
$z = 0;
foreach ( $neues_array as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["total_cases_per_million"]]);
$wert_t = floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]]);
$wert_g = floatval($datensatz[$liste_kopffelder["Genesene_ppm"]]);
// Datum
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text x='" . ($z * $s + 5) . "' y='410' style='fill:#000000;' transform='rotate(90," . ($z * $s + 5) . ",410)'>" . date("d.M", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ($z * $s + 5) . "' y1='400' x2='" . ($z * $s + 5) . "' y2='405' style='stroke:#000000;' />\n";
# Fälle
echo "<line x1='" . ($z * $s + 5) . "' y1='400' x2='" . ($z * $s + 5) . "' y2='" . round((400 - 400 * $wert_f / $max_f_ges), 1) . "' style='stroke:#2222AA; stroke-width:10'/>\n";
# Genesene
echo "<line x1='" . ($z * $s + 5) . "' y1='400' x2='" . ($z * $s + 5) . "' y2='" . round((400 - 400 * $wert_g / $max_f_ges), 1) . "' style='stroke:#FF6600; stroke-width:10'/>\n";
# Tote
echo "<line x1='" . ($z * $s + 5) . "' y1='400' x2='" . ($z * $s + 5) . "' y2='" . round((400 - 400 * $wert_t / $max_f_ges), 1) . "' style='stroke:#AA2222; stroke-width:10'/>\n";
$z++;
}
echo "</g>";
//Legende
echo "\n<g id='legende3' transform='translate($offset_legende,50)'>
<rect x='0' y='40' rx='8' ry='8' width='170' height='85' style='stroke:#000000; fill:#FFEECC; stroke-width:2; fill-opacity:0.8' />
<text x='10' y='60' style='fill:#000000'>Legende</text>
<text x='20' y='80' style='fill:#0000ff;font-size:14;'>Aktive Infektionen</text>
<text x='20' y='95' style='fill:#FF6600;font-size:14;'>Genesene</text>
<text x='20' y='110' style='fill:#FF0000;font-size:14;'>Todesfälle</text>
</g>\n";
echo "</svg>\n";
// Gesamtinfektionen2
echo "<!-- Gesamtinfektionen 2 -->\n\n";
echo "<h3>Gesamtinfektionen, Todesfälle und Impfungen im Vergleich</h3>\n";
echo "<svg width='$svg_laenge' height='500'>\n";
echo "<g id='plot3' transform='translate($x_offset,0)'>\n";
# x-Achse unten
echo "<line x1='0' y1='400' x2='$diagramm_laenge' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
$z = 0;
$max_f_ges = 1000000;
foreach ( $neues_array as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["total_cases_per_million"]] );
$wert_g = floatval($datensatz[$liste_kopffelder["Genesene_ppm"]] );
$wert_t = floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]] );
$wert_i1 = floatval($datensatz[$liste_kopffelder["people_vaccinated_per_hundred"]] * 10000);
$wert_i2 = floatval($datensatz[$liste_kopffelder["people_fully_vaccinated_per_hundred"]] * 10000);
// Datum zeichnen
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text x='" . ($z * $s + 3) . "' y='410' style='fill:#000000;' transform='rotate(90," . ($z * $s + 3) . ",410)'>" . date("d.M", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ($z * $s + 7) . "' y1='400' x2='" . ($z * $s + 7) . "' y2='405' style='stroke:#000000;' />\n";
# Linie zeichnen (Fälle)
echo "<line x1='" . ( $z * $s + 3 ) . "' y1='400' x2='" . ( $z * $s + 3 ) . "' y2='" . round((400 - 400 * $wert_f / $max_f_ges), 1) . "' style='stroke:#2222AA; stroke-width:8'/>\n";
# Linie zeichnen (Genesene)
echo "<line x1='" . ( $z * $s + 3 ) . "' y1='400' x2='" . ( $z * $s + 3 ) . "' y2='" . round((400 - 400 * $wert_g / $max_f_ges), 1) . "' style='stroke:#FF6600; stroke-width:8'/>\n";
# Linie zeichnen (Tote)
echo "<line x1='" . ( $z * $s + 3 ) . "' y1='400' x2='" . ( $z * $s + 3 ) . "' y2='" . round((400 - 400 * $wert_t / $max_f_ges), 1) . "' style='stroke:#AA2222; stroke-width:8'/>\n";
# Linie zeichnen (1. Impfung)
echo "<line x1='" . ( $z * $s + 11 ) . "' y1='400' x2='" . ( $z * $s + 11 ) . "' y2='" . round((400 - 400 * $wert_i1 / $max_f_ges), 1) . "' style='stroke:#22AA22; stroke-width:8'/>\n";
# Linie zeichnen (vollständig geimpft)
echo "<line x1='" . ( $z * $s + 11 ) . "' y1='400' x2='" . ( $z * $s + 11 ) . "' y2='" . round((400 - 400 * $wert_i2 / $max_f_ges), 1) . "' style='stroke:#007700; stroke-width:8'/>\n";
$z++;
}
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f_ges));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
$interval_skala = pow(10, ($laenge - 1));
# Hauptlinien
for ( $a = 1; $a <= 10; $a++ ) {
echo "<line x1='0' y1='" . round(( 400 - 400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' x2='$diagramm_laenge' y2='" . round(( 400 - 400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round(( 405 - 400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' text-anchor='end' style='fill:#000000;'>" . number_format($a * 10 , 0,",",".") . " %</text>\n";
}
echo "</g>\n";
//Legende
echo "\n<g id='legende4' transform='translate($offset_legende,50)'>
<rect x='0' y='40' rx='8' ry='8' width='180' height='115' style='stroke:#000000; fill:#FFEECC; stroke-width:2; fill-opacity:0.8' />
<text x='10' y='60' style='fill:#000000'>Legende</text>
<text x='20' y='80' style='fill:#22AA22;font-size:14;'>Erstimpfung</text>
<text x='20' y='95' style='fill:#007700;font-size:14;'>Vollständige Impfung</text>
<text x='20' y='110' style='fill:#2222AA;font-size:14;'>Aktive Infektionen</text>
<text x='20' y='125' style='fill:#FF6600;font-size:14;'>Genesene</text>
<text x='20' y='140' style='fill:#AA2222;font-size:14;'>Todesfälle</text>
</g>\n";
echo "</svg>\n";
// der Fußteil
include ("./includes/footer.php");
?>
zeitreihen_diagramme_8wochen.php<?php
// Was ändert sich? Länge der Grafik, Breite der Linien, Streckung
include ("./includes/header.php");
# Streckung der Werte
$s = 10;
$land_akt = $laenderverweis;
$neues_array = filter_datum_land(56);
// der Inhalt
$x2_offset = 210;
$x_offset = 80;
$diagramm_laenge = count($neues_array) * $s;
# Länge der SVG-Datei
$svg_laenge = $diagramm_laenge + $x_offset + $x2_offset;
# Höhe der SVG-Datei
$svg_hoehe = 500;
$offset_legende = $diagramm_laenge + $x_offset + 20;
# Maximum ermitteln
$max_f = max(array_column($neues_array, 9)); # Fälle
$max_f_ges = max(array_column($neues_array, 8)); # Fälle kumuliert
$max_t = max(array_column($neues_array, 48)); # Tote
$max_i = max(array_column($neues_array, 55)); # Impfungen
$FT = $max_f / $max_t;
if ( $FT > 100 ) {
$faktor_tote = floor($FT - ($FT % 100)) / 2;
} else {
$faktor_tote = floor($FT - ($FT % 10)) / 2;
}
if ($faktor_tote == 0) {$faktor_tote = 25;}
# Faktoren für die Skalierung ermitteln
$FI = $max_i / $max_f;
$FI_stellen = floor(log10($FI));
$FI_ziffer1 = str_split($FI)[0];
$faktor_impfungen = ($FI_ziffer1 + 1) * pow(10, $FI_stellen);
#echo "Faktor Impfungen: " . $faktor_impfungen;
# wenn der Faktor 0 ist auf Standard-Wert setzen
if ($faktor_impfungen == 0) {$faktor_impfungen = 25;}
if ($faktor_impfungen < 1) {$faktor_impfungen = 1;}
#echo "Faktor Impfungen: " . $faktor_impfungen;
echo "<h2>Verlauf der letzten 8 Wochen für " . $liste_laender_iso_de["$laenderverweis"] . "</h2>\n";
// Neuinfektionen
echo "<h3>Neuinfektionen, Todesfälle und Impfungen (Infektionsrate, Sterberate, Impfrate) </h3>\n";
echo "<svg id='svg_fl' width='$svg_laenge' height='500'>\n";
echo "<g id='plot1' transform='translate($x_offset,0)'>\n";
# X-Achse unten
echo "<line x1='0' y1='400' x2='$diagramm_laenge' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
$z = 0;
# Pointer des Array zurück setzen
reset($neues_array);
# aktuellen Wert (erster Wert) ausgeben
$ar_tmp = current($neues_array);
$wert_f3_tmp = round((400 - 400 * (floatval($ar_tmp[$liste_kopffelder["GD_Faelle_neu_14_ppm"]])) / $max_f), 1);
$wert_t3_tmp = round((400 - 400 * (floatval($ar_tmp[$liste_kopffelder["GD_Tote_neu_14_ppm"]]) * $faktor_tote) / $max_f), 1);
$wert_i3_tmp = round((400 - 400 * (floatval($ar_tmp[$liste_kopffelder["GD_Impfungen_14_ppm"]]) / $faktor_impfungen) / $max_f), 1);
$z_tmp = $z * $s + 6;
foreach ( $neues_array as $datensatz ) {
$wert_f = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["new_cases_per_million"]]) / $max_f)), 1);
$wert_t = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["new_deaths_per_million"]]) * $faktor_tote) / $max_f), 1);
$wert_i = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["new_vaccinations"]] / floatval($datensatz[$liste_kopffelder["population"]]) * (1000000 / $faktor_impfungen)) / $max_f)), 1);
# Die Y-Koordniate ergibt sich aus der Höhe der Grafik minus Dem Anteil des Wertes am Maximalwert
$wert_f3 = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["GD_Faelle_neu_14_ppm"]])) / $max_f), 1);
$wert_t3 = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["GD_Tote_neu_14_ppm"]]) * $faktor_tote) / $max_f), 1);
$wert_i3 = round((400 - 400 * (floatval($datensatz[$liste_kopffelder["GD_Impfungen_14_ppm"]]) / $faktor_impfungen) / $max_f), 1);
# Linie zeichnen (Fälle)
echo "<line x1='" . ( $z * $s + 3 ) . "' y1='400' x2='" . ( $z * $s + 3 ) . "' y2='$wert_f' style='stroke:#6666FF; stroke-width:3' />\n";
# Linie zeichnen (Tote)
echo "<line x1='" . ( $z * $s + 6 ) . "' y1='400' x2='" . ( $z * $s + 6 ) . "' y2='$wert_t' style='stroke:#FF6666; stroke-width:3' />\n";
# Linie zeichnen (Impfungen)
echo "<line x1='" . ( $z * $s + 9 ) . "' y1='400' x2='" . ( $z * $s + 9 ) . "' y2='$wert_i' style='stroke:#007700; stroke-width:3'/>\n";
# Linie zeichnen (gleitender Durchschnitt Fälle)
echo "<line x1='" . ( $z * $s + 6 ) . "' y1='$wert_f3' x2='$z_tmp' y2='$wert_f3_tmp' style='stroke:#000077; stroke-width:3' />\n";
# Linie zeichnen (gleitender Durchschnitt Tote)
echo "<line x1='" . ( $z * $s + 6 ) . "' y1='$wert_t3' x2='$z_tmp' y2='$wert_t3_tmp' style='stroke:#770000; stroke-width:3' />\n";
//if ( $wert_i == 0 && $wert_i_tmp == 0 ) {} else {
# Linie zeichnen (gleitender Durchschnitt Impfungen)
echo "<line x1='" . ( $z * $s + 7 ) . "' y1='" . $wert_i3 . "' x2='" . $z_tmp . "' y2='" . $wert_i3_tmp . "' class='l_gi' style='stroke-width:3;' />\n";
//}
$z_tmp = $z * $s + 6;
$wert_f3_tmp = $wert_f3;
$wert_t3_tmp = $wert_t3;
$wert_i3_tmp = $wert_i3;
// Datum
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text class='datum3' x='" . ($z * $s + 3) . "' y='410' style='fill:#000000;' transform='rotate(90," . ($z * $s + 3) . ",410)'>" . date("d.M", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ($z * $s + 7) . "' y1='400' x2='" . ($z * $s + 7) . "' y2='405' style='stroke:#000000;' />\n";
$index = $x;
$z++;
}
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
# alternativ: interval_skala=ceil(log10($zahl);
$interval_skala = pow(10, ($laenge - 1));
# Hauptlinien zeichnen
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((400 - 400 * $a * $interval_skala / $max_f ), 1) . "' x2='$diagramm_laenge' y2='" . round((400 - 400 * $a * $interval_skala / $max_f), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * $a * $interval_skala / $max_f), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . $a * $interval_skala . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * $a * $interval_skala / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . round($a * $interval_skala / $faktor_tote, 2) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * $a * $interval_skala / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#007700;font-size:80%;'>" . $a * $interval_skala * $faktor_impfungen . "</text>\n";
# Hilflinien zeichnen
# wenn es weniger als 3 Skalenstriche geben würde
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . round(( $a * $interval_skala - $interval_skala / 2 ) / $faktor_tote, 2) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#007700;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) * $faktor_impfungen . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) . "' x2='$diagramm_laenge' y2='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala + $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . round(( $a * $interval_skala + $interval_skala / 2 ) / $faktor_tote, 2) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#007700;font-size:80%;'>" . ( $a * $interval_skala + $interval_skala / 2 ) * $faktor_impfungen . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
echo "</g>\n";
// Legende1
echo "\n<g id='legende1' transform='translate(" . $offset_legende . ",50)'>
<rect x='0' y='40' rx='8' ry='8' width='170' height='100' style='stroke:#000000; fill:#FFEECC; stroke-width:2; fill-opacity:0.8' />
<text x='20' y='60' style='fill:#000000'>Legende</text>
<text x='30' y='80' style='fill:#0000FF'>Neuinfektionen</text>
<text x='30' y='100' style='fill:#FF0000'>Todesfälle</text>
<text x='30' y='120' style='fill:#007700'>Impfungen</text>
</g>\n";
echo "</svg>\n\n";
// Regression
echo "<h3>Lineare Regression</h3>";
include ("./includes/regression_56.php");
// Gesamtinfektionen1
echo "<!-- Gesamtinfektionen 1 -->\n\n";
echo "<h3>Aktive Infektionen, Genesene und Todesfälle im Vergleich</h3>\n";
echo "<svg width='$svg_laenge' height='500'>\n";
echo "<g id='plot2' transform='translate($x_offset,0)'>\n";
# X-Achse unten
echo "<line x1='0' y1='400' x2='$diagramm_laenge' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f_ges));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
$interval_skala = pow(10, ($laenge - 1));
# Hauptlinien zeichnen
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((400 - 400 * $a * $interval_skala / $max_f_ges), 1) . "' x2='" . $diagramm_laenge . "' y2='" . round((400 - 400 * $a * $interval_skala / $max_f_ges), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * $a * $interval_skala / $max_f_ges), 1) . "' text-anchor='end' style='fill:#000000;'>" . number_format($a * $interval_skala, 0,",",".") . "</text>\n";
# Hilflinien zeichnen
# wenn es weniger als 3 Skalenstriche geben würde
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f_ges ) . "' text-anchor='end' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f_ges ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . ( 405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f_ges ) . "' text-anchor='end' style='fill:#000000'>" . number_format(($a * $interval_skala - $interval_skala / 2), 0,",",".") . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f_ges ) . "' text-anchor='end' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f_ges ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . ( 405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f_ges ) . "' text-anchor='end' style='fill:#000000'>" . number_format(($a * $interval_skala + $interval_skala / 2), 0,",",".") . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
$z = 0;
foreach ( $neues_array as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["total_cases_per_million"]]);
$wert_t = floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]]);
$wert_g = floatval($datensatz[$liste_kopffelder["Genesene_ppm"]]);
// Datum
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text class='datum3' x='" . ($z * $s + 5) . "' y='410' style='fill:#000000;' transform='rotate(90," . ($z * $s + 5) . ",410)'>" . date("d.M", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ($z * $s + 5) . "' y1='400' x2='" . ($z * $s + 5) . "' y2='405' style='stroke:#000000;' />\n";
# Fälle
echo "<line x1='" . ($z * $s + 5) . "' y1='400' x2='" . ($z * $s + 5) . "' y2='" . round((400 - 400 * $wert_f / $max_f_ges), 1) . "' style='stroke:#2222AA; stroke-width:5'/>\n";
# Genesene
echo "<line x1='" . ($z * $s + 5) . "' y1='400' x2='" . ($z * $s + 5) . "' y2='" . round((400 - 400 * $wert_g / $max_f_ges), 1) . "' style='stroke:#FF6600; stroke-width:5'/>\n";
# Tote
echo "<line x1='" . ($z * $s + 5) . "' y1='400' x2='" . ($z * $s + 5) . "' y2='" . round((400 - 400 * $wert_t / $max_f_ges), 1) . "' style='stroke:#AA2222; stroke-width:5'/>\n";
$z++;
}
echo "</g>";
//Legende
echo "\n<g id='legende3' transform='translate(" . $offset_legende . ",50)'>
<rect x='0' y='40' rx='8' ry='8' width='170' height='85' style='stroke:#000000; fill:#FFEECC; stroke-width:2; fill-opacity:0.8' />
<text x='10' y='60' style='fill:#000000'>Legende</text>
<text x='20' y='80' style='fill:#0000ff;font-size:14;'>Aktive Infektionen</text>
<text x='20' y='95' style='fill:#FF6600;font-size:14;'>Genesene</text>
<text x='20' y='110' style='fill:#FF0000;font-size:14;'>Todesfälle</text>
</g>\n";
echo "</svg>\n";
// Gesamtinfektionen2
echo "<!-- Gesamtinfektionen 2 -->\n\n";
echo "<h3>Gesamtinfektionen, Todesfälle und Impfungen im Vergleich</h3>\n";
echo "<svg width='" . $svg_laenge . "' height='500'>\n";
echo "<g id='plot3' transform='translate(" . $x_offset . ",0)'>\n";
# x-Achse unten
echo "<line x1='0' y1='400' x2='" . $diagramm_laenge . "' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
$z = 0;
$max_f_ges = 1000000;
foreach ( $neues_array as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["total_cases_per_million"]] );
$wert_g = floatval($datensatz[$liste_kopffelder["Genesene_ppm"]] );
$wert_t = floatval($datensatz[$liste_kopffelder["total_deaths_per_million"]] );
$wert_i1 = floatval($datensatz[$liste_kopffelder["people_vaccinated_per_hundred"]] * 10000);
$wert_i2 = floatval($datensatz[$liste_kopffelder["people_fully_vaccinated_per_hundred"]] * 10000);
// Datum zeichnen
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text class='datum3' x='" . ($z * $s + 3) . "' y='410' style='fill:#000000;' transform='rotate(90," . ($z * $s + 3) . ",410)'>" . date("d.M", strtotime($datensatz[$liste_kopffelder["date"]])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ($z * $s + 7) . "' y1='400' x2='" . ($z * $s + 7) . "' y2='405' style='stroke:#000000;' />\n";
# Linie zeichnen (Fälle)
echo "<line x1='" . ( $z * $s + 5 ) . "' y1='400' x2='" . ( $z * $s + 5 ) . "' y2='" . round((400 - 400 * $wert_f / $max_f_ges), 1) . "' style='stroke:#2222AA; stroke-width:4'/>\n";
# Linie zeichnen (Genesene)
echo "<line x1='" . ( $z * $s + 5 ) . "' y1='400' x2='" . ( $z * $s + 5 ) . "' y2='" . round((400 - 400 * $wert_g / $max_f_ges), 1) . "' style='stroke:#FF6600; stroke-width:4'/>\n";
# Linie zeichnen (Tote)
echo "<line x1='" . ( $z * $s + 5 ) . "' y1='400' x2='" . ( $z * $s + 5 ) . "' y2='" . round((400 - 400 * $wert_t / $max_f_ges), 1) . "' style='stroke:#AA2222; stroke-width:4'/>\n";
# Linie zeichnen (1. Impfung)
echo "<line x1='" . ( $z * $s + 8 ) . "' y1='400' x2='" . ( $z * $s + 8 ) . "' y2='" . round((400 - 400 * $wert_i1 / $max_f_ges), 1) . "' style='stroke:#22AA22; stroke-width:4'/>\n";
# Linie zeichnen (vollständig geimpft)
echo "<line x1='" . ( $z * $s + 8 ) . "' y1='400' x2='" . ( $z * $s + 8 ) . "' y2='" . round((400 - 400 * $wert_i2 / $max_f_ges), 1) . "' style='stroke:#007700; stroke-width:4'/>\n";
$z++;
}
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f_ges));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
$interval_skala = pow(10, ($laenge - 1));
# Hauptlinien
for ( $a = 1; $a <= 10; $a++ ) {
echo "<line x1='0' y1='" . round(( 400 - 400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' x2='$diagramm_laenge' y2='" . round(( 400 - 400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round(( 405 - 400 * $a / 10 * $interval_skala / $max_f_ges), 1) . "' text-anchor='end' style='fill:#000000;'>" . number_format($a * 10 , 0,",",".") . " %</text>\n";
}
echo "</g>\n";
//Legende
echo "\n<g id='legende4' transform='translate($offset_legende,50)'>
<rect x='0' y='40' rx='8' ry='8' width='180' height='115' style='stroke:#000000; fill:#FFEECC; stroke-width:2; fill-opacity:0.8' />
<text x='10' y='60' style='fill:#000000'>Legende</text>
<text x='20' y='80' style='fill:#22AA22;font-size:14;'>Erstimpfung</text>
<text x='20' y='95' style='fill:#007700;font-size:14;'>Vollständige Impfung</text>
<text x='20' y='110' style='fill:#2222AA;font-size:14;'>Aktive Infektionen</text>
<text x='20' y='125' style='fill:#FF6600;font-size:14;'>Genesene</text>
<text x='20' y='140' style='fill:#AA2222;font-size:14;'>Todesfälle</text>
</g>\n";
echo "</svg>\n";
// der Fußteil
include ("./includes/footer.php");
?>
zeitreihen_diagramme_wochensumme.php<?php
include ("./includes/header.php");
# Streckung der Werte
$s = 8;
$land_akt = $laenderverweis;
$neues_array = filter_montag();
// der Inhalt
$x2_offset = 210;
$x_offset = 80;
$diagramm_laenge = count($neues_array) * $s;
# Länge der SVG-Datei
$svg_laenge = $diagramm_laenge + $x_offset + $x2_offset;
# Höhe der SVG-Datei
$svg_hoehe = 500;
$offset_legende = $x_offset + 20;
#$offset_legende = $diagramm_laenge + $x_offset + 20;
# Maximum ermitteln
$max_f = max(array_column($neues_array, $liste_kopffelder["Sum_Faelle_neu_7_ppm"])) * 1.05;
$max_t = max(array_column($neues_array, $liste_kopffelder["Sum_Tote_neu_7_ppm"])) * 1.05;
$max_i = max(array_column($neues_array, $liste_kopffelder["Sum_Impfungen_7"])) * 1.05;
# Faktoren für die Skalierung ermitteln
$FI = $max_i / $max_f;
$FI_stellen = floor(log10($FI));
$FI_ziffer1 = str_split($FI)[0];
$faktor_impfungen = ($FI_ziffer1 + 1) * pow(10, $FI_stellen);
# wenn der Faktor 0 ist auf Standard-Wert setzen
if ($faktor_impfungen == 0) {$faktor_impfungen = 25;}
$FT = $max_f / $max_t;
if ( $FT > 100 ) {
$faktor_tote = floor($FT - ($FT % 100)) / 2;
} else {
$faktor_tote = floor($FT - ($FT % 10)) / 2;
}
if ($faktor_tote == 0) {$faktor_tote = 25;}
#echo "<p>max_f: $max_f max_t: $max_t FT: $FT - Stellen: $FT_stellen - 1. Ziffer: $FT_ziffer1 - $FT2 - $FT2i</p>";
echo "<h2>Wochensummen seit Beginn der Pandemie für " . $liste_laender_iso_de["$laenderverweis"] . "</h2>\n";
// Neuinfektionen
echo "<h3>Neuinfektionen, Todesfälle und Impfungen</h3>\n";
echo "<svg id='svg_fl' width='" . ($svg_laenge) . "' height='500'>\n";
echo "<g id='plot1' transform='translate(" . $x_offset . ",0)'>\n";
#x-Achse unten
echo "<line x1='0' y1='400' x2='" . $diagramm_laenge . "' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
$z = 0;
$wert_i_tmp = 0;
foreach ( $neues_array as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["Sum_Faelle_neu_7_ppm"]]);
$wert_t = floatval($datensatz[$liste_kopffelder["Sum_Tote_neu_7_ppm"]]) * $faktor_tote;
$wert_i = floatval($datensatz[$liste_kopffelder["Sum_Impfungen_7"]]) / $faktor_impfungen;
# Linie zeichnen (Fälle)
echo "<line x1='" . ( $z * $s + 2 ) . "' y1='400' x2='" . ( $z * $s + 2 ) . "' y2='" . round((400 - 400 * $wert_f / $max_f), 1) . "' class='l_f' style='stroke-width:6' />\n";
# Linie zeichnen (Tote)
echo "<line x1='" . ( $z * $s + 2 ) . "' y1='400' x2='" . ( $z * $s + 2 ) . "' y2='" . round((400 - 400 * $wert_t / $max_f), 1) . "' style='stroke:#FF6666BB; stroke-width:6' />\n";
if ( $wert_i == 0 && $wert_i_tmp == 0 ) {} else {
# Linie zeichnen (Impfungen)
echo "<line x1='" . $z_tmp . "' y1='" . round((400 - 400 * $wert_i_tmp / $max_f ), 1) . "' x2='" . ( $z * $s ) . "' y2='" . round((400 - 400 * $wert_i / $max_f ), 1) . "' style='stroke:#22AA22DD; stroke-width:5'/>\n";
}
$z_tmp = $z * $s;
$wert_i_tmp = $wert_i;
// Datum
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text class='datum3' x='" . ( $z * $s ) . "' y='410' style='fill:#000000;' transform='rotate(80," . ( $z * $s ) . ",410)'>KW " . date("W 'y", strtotime($datensatz[3])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ( $z * $s + 3 ) . "' y1='400' x2='" . ( $z * $s + 3 ) . "' y2='405' style='stroke:#000000;' />\n";
$index = $x;
$z++;
}
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
# alternativ: interval_skala=ceil(log10($zahl);
$interval_skala = pow(10, ($laenge - 1));
// Hauptlinien
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((400 - 400 * $a * $interval_skala / $max_f ), 1) . "' x2='" . $diagramm_laenge . "' y2='" . round((400 - 400 * $a * $interval_skala / $max_f), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * $a * $interval_skala / $max_f), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . $a * $interval_skala . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * $a * $interval_skala / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . number_format($a * $interval_skala / $faktor_tote, 0,",",".") . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * $a * $interval_skala / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#22AA22;font-size:80%;'>" . $a * $interval_skala * $faktor_impfungen . "</text>\n";
// Hilflinien
# wenn es weniger als 3 Skalenstriche geben würde
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) . "' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . number_format(( $a * $interval_skala - $interval_skala / 2 ) / $faktor_tote, 0,",",".") . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#22AA22;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) * $faktor_impfungen . "</text>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala + $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . number_format(( $a * $interval_skala + $interval_skala / 2 ) / $faktor_tote, 0,",",".") . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala + $interval_skala / 2 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#22AA22;font-size:80%;'>" . ( $a * $interval_skala + $interval_skala / 2 ) * $faktor_impfungen . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
echo "</g>\n";
// Legende1
echo "\n<g id='legende1' transform='translate(" . $offset_legende . ", 20)'>
<rect x='0' y='40' rx='8' ry='8' width='170' height='95' style='stroke:#000000; fill:#FFFFFF; stroke-width:2; fill-opacity:0.8' />
<text x='20' y='60' style='fill:#000000'>Legende</text>
<text x='30' y='80' style='fill:#6666FF'>Neuinfektionen</text>
<text x='30' y='100' style='fill:#FF6666'>Todesfälle</text>
<text x='30' y='120' style='fill:#22AA22'>Impfungen</text>
</g>\n";
echo "</svg>\n\n";
// der Fußteil
include ("./includes/footer.php");
?>
zeitreihen_diagramme_monatssumme.php<?php
// Was ändert sich? Länge der Grafik, Breite der Linien, Streckung -> Faktor
include ("./includes/header.php");
# Streckung der Werte
$s = 30;
$land_akt = $laenderverweis;
$neues_array = filter_monat();
// der Inhalt
$x2_offset = 210;
$x_offset = 80;
$diagramm_laenge = count($neues_array) * $s;
# Länge der SVG-Datei
$svg_laenge = $diagramm_laenge + $x_offset + $x2_offset;
# Höhe der SVG-Datei
$svg_hoehe = 500;
$offset_legende = $x_offset + 20;
#$offset_legende = $diagramm_laenge + $x_offset + 20;
# Maximum ermitteln
$max_f = max(array_column($neues_array, $liste_kopffelder["Sum_Faelle_neu_28_ppm"])) * 1.05;
$max_t = max(array_column($neues_array, $liste_kopffelder["Sum_Tote_neu_28_ppm"])) * 1.05;
$max_i = max(array_column($neues_array, $liste_kopffelder["Sum_Impfungen_28"])) * 2;
# Faktoren für die Skalierung ermitteln
$FI = $max_i / $max_f;
if ( $FI < 10 ) {
$faktor_impfungen = ceil($FI);
} else {
$faktor_impfungen = ceil($FI - ($FI % 10));
}
# wenn der Faktor 0 ist auf Standard-Wert setzen
if ($faktor_impfungen == 0) {$faktor_impfungen = 25;}
$FT = $max_f / $max_t;
if ( $FT > 100 ) {
$faktor_tote = floor($FT - ($FT % 100)) / 2;
} else {
$faktor_tote = floor($FT - ($FT % 10)) / 2;
}
if ($faktor_tote == 0) {$faktor_tote = 25;}
#echo "<p>max_f: $max_f max_i: $max_i FI: $FI - Stellen: $FI_stellen - 1. Ziffer: $FI_ziffer1 - $faktor_impfungen</p>";
echo "<h2>Monatssummen für " . $liste_laender_iso_de["$laenderverweis"] . "</h2>\n";
// Neuinfektionen
echo "<h3>Neuinfektionen, Todesfälle und Impfungen</h3>\n";
echo "<svg id='svg_fl' width='" . ($svg_laenge) . "' height='500'>\n";
echo "<g id='plot1' transform='translate(" . $x_offset . ",0)'>\n";
#x-Achse unten
echo "<line x1='0' y1='400' x2='" . $diagramm_laenge . "' y2='400' style='stroke:#000000; stroke-width:2'/>\n";
$z = 0;
$wert_i_tmp = 0;
foreach ( $neues_array as $datensatz ) {
$wert_f = floatval($datensatz[$liste_kopffelder["Sum_Faelle_neu_28_ppm"]]);
$wert_t = floatval($datensatz[$liste_kopffelder["Sum_Tote_neu_28_ppm"]]) * $faktor_tote;
$wert_i = floatval($datensatz[$liste_kopffelder["Sum_Impfungen_28"]]) / $faktor_impfungen;
# Linie zeichnen (Fälle)
echo "<line x1='" . ( $z * $s + 5 ) . "' y1='400' x2='" . ( $z * $s + 5 ) . "' y2='" . round(( 400 - 400 * $wert_f / $max_f ), 1) . "' style='stroke:#6666FF; stroke-width:25' />\n";
# Linie zeichnen (Tote)
echo "<line x1='" . ( $z * $s + 5 ) . "' y1='400' x2='" . ( $z * $s + 5 ) . "' y2='" . round(( 400 - 400 * $wert_t / $max_f ), 1) . "' style='stroke:#FF6666AA; stroke-width:25' />\n";
if ( $wert_i == 0 && $wert_i_tmp == 0 ) {} else {
# Linie zeichnen (Impfungen)
echo "<line x1='" . $z_tmp . "' y1='" . round(( 400 - 400 * $wert_i_tmp / $max_f ), 1) . "' x2='" . ( $z * $s + 2 ) . "' y2='" . round((400 - 400 * $wert_i / $max_f ), 1) . "' style='stroke:#22AA22DD; stroke-width:10'/>\n";
}
$z_tmp = $z * $s + 2;
$wert_i_tmp = $wert_i;
// Datum
# Datum zeichnen, um 90 ° im UZS gedreht
echo "<text class='datum6' x='" . ( $z * $s ) . "' y='410' style='fill:#000000;' transform='rotate(70," . ( $z * $s ) . ",410)'>" . date("M y", strtotime($datensatz[3])) . "</text>\n";
# Skalenstrich zeichnen
echo "<line x1='" . ( $z * $s + 4 ) . "' y1='400' x2='" . ( $z * $s + 4 ) . "' y2='405' style='stroke:#000000;' />\n";
$index = $x;
$z++;
}
// Skalierung
# Maximum abrunden
$max_f_gerundet = intval(round($max_f));
# Anzahl Dezimalstellen ermitteln
$laenge = strlen(strval($max_f_gerundet));
# Erste Ziffer ermitteln
$zahl1 = substr($max_f_gerundet, 0, 1);
$anzahl_skalenteile = $zahl1;
# Interval der Hauptlinen = 10 hoch Dezimalstellen - 1
# alternativ: interval_skala=ceil(log10($zahl);
$interval_skala = pow(10, ($laenge - 1));
// Hauptlinien
for ( $a = 1; $a <= $anzahl_skalenteile; $a++ ) {
echo "<line x1='0' y1='" . round((400 - 400 * $a * $interval_skala / $max_f ), 1) . "' x2='" . $diagramm_laenge . "' y2='" . round((400 - 400 * $a * $interval_skala / $max_f), 1) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * $a * $interval_skala / $max_f), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . $a * $interval_skala . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * $a * $interval_skala / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . number_format($a * $interval_skala / $faktor_tote, 0,",",".") . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * $a * $interval_skala / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#22AA22;font-size:80%;'>" . $a * $interval_skala * $faktor_impfungen . "</text>\n";
// Hilflinien
# wenn es weniger als 3 Skalenstriche geben würde
if ( $anzahl_skalenteile < 3 ){
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . number_format(( $a * $interval_skala - $interval_skala / 2 ) / $faktor_tote, 0,",",".") . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 2 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#22AA22;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 2 ) * $faktor_impfungen . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 4 ) / $max_f ) . "' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 4 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala - $interval_skala / 4 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 4 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 4 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . number_format(( $a * $interval_skala - $interval_skala / 4 ) / $faktor_tote, 0,",",".") . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 4 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#22AA22;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 4 ) * $faktor_impfungen . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 4 ) / $max_f ) . "' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala + $interval_skala / 4 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala + $interval_skala / 4 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala + $interval_skala / 4 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala + $interval_skala / 4 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . number_format(( $a * $interval_skala + $interval_skala / 4 ) / $faktor_tote, 0,",",".") . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala + $interval_skala / 4 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#22AA22;font-size:80%;'>" . ( $a * $interval_skala + $interval_skala / 4 ) * $faktor_impfungen . "</text>\n";
echo "<line x1='0' y1='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 4 * 3 ) / $max_f ) . "' x2='" . $diagramm_laenge . "' y2='" . ( 400 - 400 * ( $a * $interval_skala - $interval_skala / 4 * 3 ) / $max_f ) . "' style='stroke:#555555; stroke-width:1'/>\n";
echo "<text x='-2' y='" . round((405 - 400 * ( $a * $interval_skala - $interval_skala / 4 * 3 ) / $max_f ), 1) . "' text-anchor='end' style='fill:#0000FF;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 4 * 3 ) . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 4 * 3 ) / $max_f), 1) + 12) . "' text-anchor='end' style='fill:#FF0000;font-size:80%;'>" . number_format(( $a * $interval_skala - $interval_skala / 4 * 3 ) / $faktor_tote, 0,",",".") . "</text>\n";
echo "<text x='-2' y='" . (round((405 - 400 * ( $a * $interval_skala - $interval_skala / 4 * 3 ) / $max_f), 1) + 24) . "' text-anchor='end' style='fill:#22AA22;font-size:80%;'>" . ( $a * $interval_skala - $interval_skala / 4 * 3 ) * $faktor_impfungen . "</text>\n";
}
}
echo "<text x='" . ( 12 - $x_offset ) . "' y='300' style='fill:#000000' transform='rotate(-90," . ( 12 - $x_offset ) . ",300)'>Je Million Einwohner</text>\n";
echo "</g>\n";
// Legende1
echo "\n<g id='legende1' transform='translate(" . $offset_legende . ", 20)'>
<rect x='0' y='40' rx='8' ry='8' width='170' height='95' style='stroke:#000000; fill:#FFFFFF; stroke-width:2; fill-opacity:0.8' />
<text x='20' y='60' style='fill:#000000'>Legende</text>
<text x='30' y='80' style='fill:#6666FF'>Neuinfektionen</text>
<text x='30' y='100' style='fill:#FF6666'>Todesfälle</text>
<text x='30' y='120' style='fill:#22AA22'>Impfungen</text>
</g>\n";
echo "</svg>\n\n";
// der Fußteil
include ("./includes/footer.php");
?>
zeitreihen_diagramme_vergleich.php<?php
$vis = htmlspecialchars($_GET['vvis']);
$faelle_tmp = 0;
$tote_tmp = 0;
# Kopfteil
include ("./includes/header.php");
# Faktor der Vergrößerung
$faktor = 3;
# Streckung der Werte
$s = 2;
# Faktor für die Skalierung von Impfungen zu Infektionen
$faktor_impfungen = 40;
# Arrays mit ISO-Codes der anzuziegenden Länder
$laendervergleich[0] = array ("DEU","GBR","FRA","ITA","USA","AUS");
$laendervergleich[1] = array ("OWID_AFR","OWID_ASI","OWID_EUR","OWID_NAM","OWID_SAM","OWID_OCE","OWID_WRL");
$laendervergleich[2] = array ("ALB","AUT","BEL","BGR","BIH","BLR","CHE","CYP","CZE","DEU","DNK","ESP","EST","FIN","FRA","GBR","GIB","GRC","HRV","HUN","IRL","ISL","ITA","LIE","LTU","LUX","LVA","MDA","MKD","MLT","MNE","NLD","NOR","OWID_KOS","POL","PRT","ROU","RUS","SMR","SRB","SVK","SVN","SWE","UKR");
$laendervergleich[3] = array ("ABW","AIA","ATG","BES","BHS","BLZ","BMU","BRB","CAN","CRI","CUB","CUW","CYM","DMA","DOM","GRD","GRL","GTM","HND","HTI","JAM","KNA","LCA","MEX","MSR","NIC","PAN","SLV","SPM","SXM","TCA","TTO","USA","VCT","VGB");
$laendervergleich[4] = array ("AGO","BDI","BEN","BFA","BWA","CAF","CIV","CMR","COD","COG","COM","CPV","DJI","DZA","EGY","ERI","ETH","GAB","GHA","GIN","GMB","GNB","GNQ","KEN","LBR","LBY","LSO","MAR","MDG","MLI","MOZ","MRT","MUS","MWI","NAM","NER","NGA","RWA","SDN","SEN","SHN","SLE","SOM","SSD","STP","SWZ","SYC","TCD","TGO","TUN","TZA","UGA","ZAF","ZMB","ZWE");
$laendervergleich[5] = array ("AFG","ARE","ARM","AZE","BGD","BHR","BRN","BTN","CHN","GEO","HKG","IDN","IND","IRN","IRQ","ISR","JOR","JPN","KAZ","KGZ","KHM","KOR","KWT","LAO","LBN","LKA","MAC","MDV","MMR","MNG","MYS","NPL","OMN","PAK","PHL","PSE","QAT","SAU","SGP","SYR","THA","TJK","TLS","TUR","TWN","UZB","VNM","YEM");
$laendervergleich[6] = array ("AUS","FJI","NCL","NZL","PNG","PYF");
$laendervergleich[7] = array ("ARG","BOL","BRA","CHL","COL","ECU","GUY","PER","PRY","SUR","URY","VEN");
# -> Vergleich äller Länder eines Kontinents (mit mehr als X Mio Einwohnern)s
echo "<h2>Verlauf seit Beginn der Pandemie</h2>\n";
echo "<table border='0'>";
echo "<tr>
<th></th>
<th><h3>Neuinfektionen, Todesfälle und Impfungen (Infektionsrate, Sterberate, Impfrate)</h3></th>
<th><h3>Aktive Infektionen</h3></th>
<th><h3>Aktive Infektionen, Genesene und Todesfälle (Summe = Gesamtinfektionen)</h3></th>
<th><h3>Gesamtinfektionen, Todesfälle und Impfungen im Vergleich</h3></th>
<th><h3>Lineare Regression (8 Wochen)</h3></th>
</tr>
<tr><td>";
foreach ( $laendervergleich[$vis] as $land_akt ) {
# Land filtern
$neues_array = filter_land();
// der Inhalt
$x_offset = 80; # linker Rand
$svg_laenge = count($neues_array) * $s + $x_offset + 10; # Länge der SVG-Datei
$svg_hoehe = 500; # Höhe der SVG-Datei
# Maximum ermitteln (Fälle)
$werte_f = array_column($neues_array, 42); # Wertespalte extrahieren
$max_f = max($werte_f) * 1.05;
# Maximum ermitteln (Fälle kumuliert)
$werte_f_ges = array_column($neues_array, 8); # Wertespalten extrahieren
$max_f_ges = max($werte_f_ges);
# Maximum ermitteln (Genesene)
$werte_g = array_column($neues_array, 54); # Wertespalte extrahieren
$max_g = max($werte_g) / 2.5;
echo "<h2><a href='zeitreihen_diagramme.php?vland=" . $land_akt . "&vseite=zeitreihen_diagramme'>" . $liste_laender_iso_de["$land_akt"] . "</a></h2>\n";
echo "</td><td>";
// Neuinfektionen
echo "<svg width='" . $svg_laenge / $faktor . "' height='" . $svg_hoehe / $faktor . "'>\n";
include ("./includes/zeitreihe_neuinfektionen_gesamt.php");
echo "</svg>\n\n";
echo "</td><td>";
// aktive Infektionen
echo "<!-- aktive Infektionen -->\n\n";
echo "<svg width='" . $svg_laenge / $faktor . "' height='" . $svg_hoehe / $faktor . "'>\n";
include ("./includes/zeitreihe_aktive_infektionen.php");
echo "</svg>\n\n";
echo "</td><td>";
// Gesamtinfektionen
echo "<!-- Gesamtinfektionen -->\n\n";
echo "<svg width='" . $svg_laenge / $faktor . "' height='" . $svg_hoehe / $faktor . "'>\n";
include ("./includes/zeitreihe_gesamtinfektionen.php");
echo "</svg>\n\n";
echo "</td><td>";
// Impfungen
echo "<!-- Impfungen -->\n\n";
echo "<svg width='" . $svg_laenge / $faktor . "' height='" . $svg_hoehe / $faktor . "'>\n";
include ("./includes/zeitreihe_impfungen.php");
echo "</svg>\n\n";
echo "</td><td>";
// Regression
echo "<!-- Regression -->\n\n";
echo "<svg width='" . $svg_laenge / $faktor / 2 . "' height='" . $svg_hoehe / $faktor . "'>\n";
$neues_array = filter_datum_land(56);
$s = 10;
$diagramm_laenge = count($neues_array) * $s;
$x2_offset = 210;
$offset_legende = $diagramm_laenge + $x_offset + 20;
$svg_laenge = $diagramm_laenge + $x_offset + $x2_offset;
# Maximum ermitteln
$max_f = max(array_column($neues_array, 9)); # Fälle
$max_t = max(array_column($neues_array, 48)); # Tote
$FT = $max_f / $max_t;
if ( $FT > 100 ) {
$faktor_tote = floor($FT - ($FT % 100)) / 2;
} else {
$faktor_tote = floor($FT - ($FT % 10)) / 2;
}
if ($faktor_tote == 0) {$faktor_tote = 25;}
include ("./includes/regression_56.php");
echo "</svg>\n\n";
echo "</td>";
echo "</tr>\n<tr><td>";
$s = 2;
}
echo "</td></tr>\n</table>";
// der Fußteil
include ("./includes/footer.php");
?>
heatmap_wo2.php<?php
$vis = htmlspecialchars($_GET['vvis']);
# Kopfteil einbinden
include ("./includes/header.php");
# Schalter zum erzeugen von SVG-Output
$svg = False;
$svg_offset_x = 150;
# Array mit Darstellungsparametern
$param_vis = array (
array (58, 100000, 10000, "0,255,0,", 99), # Impfungen
array (43, 2000, 750, "0,0,255,", 98), # Infektionen
array (49, 200, 75, "255,0,0,", 98), # Todesfälle
array (15, 2000, 10, "255,255,0,", 98), # Tests
array (52, 10000, 10000, array ("255,0,0,","0,255,0,"), 99), # Trend 28 Tahe
array (50, 10000, 10000, array ("255,0,0,","0,255,0,"), 99) # Trend 14 Tahe
);
$nr_spalte = $param_vis[$vis][0]; # darzustellende Wertespalte
#$kappwert = $param_vis[$vis][1]; # oberer Maximalwert
#$skalierung = $param_vis[$vis][2]; # Stufenzahl
$farbe = $param_vis[$vis][3]; # Farbe
$perzentil = $param_vis[$vis][4]; # Angabe des Bezugs-Perzentils
$regionen = array ("","Europe","North America","South America","Asia","Oceania","Africa");
$regionen_farben = array ("FFFFFF","0000FF","FF0000","00FF00","FF00FF","FFFF00","00FFFF");
# Anzahl der Tage ermitteln (für Länge der Zwichenzeile)
$anzahl_tage = count(array_unique(array_column($array, 3)));
$anzahl_tage = 750;
$leerzeile = "<tr style='background-color:#D3FFFF'><td colspan='" . $anzahl_tage . "'>.</td></tr>\n<tr style='background-color:#D3FFFF'><td colspan='" . $anzahl_tage . "'>.</td></tr>\n";
# Ausgabe
##########
echo "<h3>Heatmap (Wochendurchschnitt)</h3>";
echo "<table style='font-size:20%;padding:0px;border-collapse:collapse;background-color:rgb(0,0,0);'>\n<thead>\n<tr>\n<th></th>\n";
if ( $svg ) {
# Ausgabedatei öffnen
$ausgabe = fopen("coronamap.svg","w");
fwrite($ausgabe, "<svg width='3400' height='2060'>\n<defs>
<style type='text/css'>
<![CDATA[
text {font-size:70%;}
]]>
</style>
</defs>\n");
# schwarzer Hintergrund
fwrite($ausgabe, "<rect x='0' y='0' width='3400' height='2065' fill='black' />\n");
}
$land_akt = "OWID_WRL";
$neues_array = array_reverse(filter_land_wo());
#var_dump($neues_array);
# Datumszeile erzeugen
$abc = 1;
foreach ($neues_array as $datensatz) {
echo "<th><div class='h_d'>" . date("j.n.", strtotime($datensatz[3])) . "</div></th>\n";
if ($svg) { fwrite($ausgabe,"<text x='" . ( $abc * 6 + $svg_offset_x ) . "' y='20' fill='#FFFFFF' transform='rotate(-90," . ( $abc * 6 + $svg_offset_x ) . ",20)'>" . date("j.n.", strtotime($datensatz[3])) . "</text>\n"); }
$abc = $abc + 1;
}
echo "</tr>\n</thead>\n<tbody>\n";
$z = 0; # Zähler (Regionen)
$z2 = 1; # Zähler (Zeilenfortschritt)
$c = 0; # counter (Datenpunkte)
# Debugging
#$testregion="";
$ar_dbg = [];
# Für jeden Kontinent
foreach ($regionen as $testregion) {
# Array auf Region filtern
$array_regio = array_reverse(filter_region_wo());
# Spalte mit ISO-Codes extrahieren
$spalte_iso = array_column($array_regio, 0);
# Duplikate entfernen
$spalte_iso = array_unique($spalte_iso);
# sortieren
sort($spalte_iso);
$spalte_iso_2 = array_unique(array_column($array_regio, 0));
sort($spalte_iso_2, SORT_LOCALE_STRING);
$ar_dbg[] = $spalte_iso_2;
#array_shift($spalte_iso_2);
foreach ($spalte_iso_2 as $land_akt) { #
$neues_array = array_reverse(filter_land_wo()); # Datensätze des Langes filtern
$wertespalte = array_column($neues_array, $nr_spalte); # Spalte mit den gewählten Werten extrahieren
sort($wertespalte, SORT_NUMERIC); # numerisch sortieren
$perz[1] = $wertespalte[floor(count($wertespalte) * 0.01)]; # 1. Perzentil
$perz[50] = $wertespalte[floor(count($wertespalte) * 0.5)]; # Median
$perz[90] = $wertespalte[floor(count($wertespalte) * 0.9)]; # 9. Dezil
$perz[95] = $wertespalte[floor(count($wertespalte) * 0.95)]; # 95. Perzentil
$perz[98] = $wertespalte[floor(count($wertespalte) * 0.98)]; # 98. Perzentil
$perz[99] = $wertespalte[floor(count($wertespalte) * 0.99)]; # 99. Perzentil
$max = $wertespalte[count($wertespalte) - 1]; # Höchster Wert
if ($max != 0){
$z2 = $z2 + 1;
# Oberer Grenzwert für die farbige Skalierung
$kappwert = $perz[$perzentil];
$skalierung = $perz[$perzentil] * 2;
if ( $nr_spalte == 52 or $nr_spalte == 50 ) {
$kappwert2 = $perz[1];
$skalierung = $perz[$perzentil];
}
if ( $land_akt == "OWID_WRL" ) { echo $leerzeile; $z2 = $z2 + 2; }
echo "<tr>\n";
$land = array_unique(array_column($neues_array, 25));
# Zeilenbeschriftung (Ländername)
echo "<td style='background-color:#" . $regionen_farben[$z] . ";'>" . $land[0] . "</td>\n";
if ($svg) { fwrite($ausgabe, "<text class='hmt' x='$svg_offset_x' y='" . ( $z2 * 10 + 8 ) . "' fill='#" . $regionen_farben[$z] . "' text-anchor='end'>" . $land[0] . "</text>\n"); }
# Zähler (Spaltenfortschritt)
$z3 = 0;
# für jedes Element von $neues_array
foreach ($neues_array as $datensatz) {
# den darzustellenden Wert aus Spalte entnehmen
$messwert = $datensatz[$nr_spalte];
# Kappung
if ( $messwert > $kappwert ) { $messwert = $kappwert; }
elseif ( $messwert < $kappwert2 ) { $messwert = $kappwert2; }
# eine Zelle mit nach Werten abgestufter Hintergrundfarbe erzeugen
$transparenz = strval(abs(round(floatval($messwert)/$skalierung, 2)));
$pos_x = $z3 * 6 + $svg_offset_x;
$pos_y = $z2 * 10;
if ( $nr_spalte != 52 and $nr_spalte != 50 ){
$farbe_comp = $farbe . $transparenz;
$c = $c + 1;
} else {
if ( $messwert > 0 ) {
$farbe_comp = $param_vis[$vis][3][1] . $transparenz;
$c = $c + 1;
} else {
$farbe_comp = $param_vis[$vis][3][0] . $transparenz;
$c = $c + 1;
}
$z3 = $z3 + 1;
}
echo "<td style='background-color:rgb( $farbe_comp );'>.</td>\n";
if ($svg) { fwrite($ausgabe, "<rect x='$pos_x' y='$pos_y' width='6' height='8' fill='rgb( $farbe_comp )'/>\n"); }
}
echo "</tr>\n";
}
}
# nach der ersten Region (Kontinente)
if ( $z == 0 ) { echo $leerzeile; $z2 = $z2 + 2; }
$z = $z + 1;
}
echo "</tbody>\n</table><br>\n";
echo "<p>$c Datenpunkte</p>";
if ($svg) {
fwrite($ausgabe, "</svg>\n");
fclose($ausgabe);
}
# Fußteil einbinden
include ("./includes/footer.php");
?>
includes/download.php<?php
# Datum der letzten Änderung der Datenbank abfragen
$datum_datenbank = date("Y-m-d", filectime("corona_owid.csv"));
$datum_vergleich = date("Y-m-d");
# Datum der letzten Änderung der Datenbank abfragen
$datum_datenbank2 = date("U", filectime("corona_owid.csv"));
# Heutiges Datum in Sekunden
$datum_vergleich2 = date("U");
# Differenz in Minuten brechnen
$datum_diff = ( $datum_vergleich2 - $datum_datenbank2 ) / 60;
#include ("./includes/datenbank_erweitern2.php");
# Wenn die letzte Änderung mehr als 20 Stunden zurück liegt
if ($datum_diff > (20*60)) {
# Name des Logfiles
$logfile = "db_download.log";
$log_alt = join(file($logfile));
$log = fopen($logfile, "w");
# Internetadresse der Quelldatenbank
$url = 'https://covid.ourworldindata.org/data/owid-covid-data.csv';
# interner Datenbankname
$file_name = "corona_owid.csv";
# Die Datenbank herunterladen und unter $file_name abspeichern; wenn der Rückgabewert 1 ist:
if(file_put_contents( $file_name, file_get_contents($url)) ) {
# Ausgabe in Logfile
fwrite($log, $log_alt . date("Y-m-d H:i") . " Datenbank aktualisiert\n");
# erweiterte Berechnungen ausführen
include ("./includes/datenbank_erweitern2.php");
} else { # Sonst
# Ausgabe in Logfile
fwrite($log, $log_alt . date("Y-m-d H:i") . " Download fehlgeschlagen\n");
}
# Logfile Schliessen
fclose($logfile);
echo "<script>location.reload();</script>";
}
?>
includes/datenbank_erweitern.php<?php
// nicht in eine Funktion legen! -> hat weniger Speicher
// Für die Reduktion der Datenbank -> relative Werte können auch ad hoc durch Division durch Bevölkerung erzeugt werden
include ("./includes/datenbank_reduzieren.php");
# Tabelle mit Ländernamen und ISO-Codes einlesen
$input_laender = file("laender_iso_en_de_region.csv");
# Liste in ein Array einlesen
for ( $x = 0 ; $x <= count($input_laender); $x++ ){ $array_laender[] = explode(",", $input_laender[$x] ); }
# Assoziative Arrays erzeugen
foreach ($array_laender as $land) { $liste_laender_iso_de["$land[0]"] = $land[2]; } # ISO -> Deutsch
unset($input_laender);
// Datenbank öffnen
# reduzierte Original-Datenbank zeilenweise als Array einlesen
$input = file("corona_owid_red.csv");
// Array ergänzen
$faelle_neu_abs = array_fill(0, 28, 0);
$tote_neu_abs = array_fill(0, 28, 0);
$faelle_neu_ppm = array_fill(0, 28, 0);
$tote_neu_ppm = array_fill(0, 28, 0);
$impfungen_neu_abs = array_fill(0, 28, 0);
# temporäre Ausgabedatei öffnen
$ausgabedatei = fopen("corona_daten_tmp.csv","w");
$x = 0;
$land_tmp = "xyz";
foreach ( $input as $zeile_input ){
# Zeile in Array aufspalten
$array[$x] = explode(",", $zeile_input);
# absolute Zahlen (für Zusammenfassung)
$faelle_neu_abs[$index] = intval($array[$x][5]);
$tote_neu_abs[$index] = intval($array[$x][8]);
$impfungen_neu_abs[$index] = intval($array[$x][38]);
# Zahlen pro Million Einwohner (für Diagramme)
$faelle_neu_ppm[$index] = floatval($array[$x][11]);
$tote_neu_ppm[$index] = floatval($array[$x][14]);
$genesene[$index2] = array ($array[$x][10], $array[$x][0]);
# wenn sich der neue und der alte ISO-Code unterscheiden
if ($array[$x][2] != $land_tmp) {
$array[0] = $array[$x];
$x = 0;
$index = 28;
$index2 = 14; # durch $x+14 ersetzbar
$faelle_neu_abs = array_fill(0, 28, 0);
$tote_neu_abs = array_fill(0, 28, 0);
$impfungen_neu_abs = array_fill(0, 28, 0);
$faelle_neu_ppm = array_fill(0, 28, 0);
$tote_neu_ppm = array_fill(0, 28, 0);
}
$summe_faelle_neu_abs[7] = 0;
$summe_tote_neu_abs[7] = 0;
$summe_impfungen_neu_abs[7] = 0;
$summe_faelle_neu_ppm[7] = 0;
$summe_tote_neu_ppm[7] = 0;
for ( $r = 0; $r < 7; $r++ ){ # für r = 1 - 7
$summe_faelle_neu_abs[7] += $faelle_neu_abs[$index-$r]; # Fälle aufsummieren
$summe_tote_neu_abs[7] += $tote_neu_abs[$index-$r]; # Fälle aufsummieren
$summe_impfungen_neu_abs[7] += $impfungen_neu_abs[$index-$r]; # Fälle aufsummieren
$summe_faelle_neu_ppm[7] += $faelle_neu_ppm[$index-$r]; # Fälle aufsummieren
$summe_tote_neu_ppm[7] += $tote_neu_ppm[$index-$r]; # Fälle aufsummieren
}
$summe_faelle_neu_abs[14] = 0;
$summe_tote_neu_abs[14] = 0;
$summe_impfungen_neu_abs[14] = 0;
$summe_faelle_neu_ppm[14] = 0;
$summe_tote_neu_ppm[14] = 0;
for ( $r = 0; $r < 14; $r++ ){ # für r = 1 - 14
$summe_faelle_neu_abs[14] += $faelle_neu_abs[$index - $r]; # Fälle aufsummieren
$summe_tote_neu_abs[14] += $tote_neu_abs[$index - $r]; # Fälle aufsummieren
$summe_impfungen_neu_abs[14] += $impfungen_neu_abs[$index - $r]; # Fälle aufsummieren
$summe_faelle_neu_ppm[14] += $faelle_neu_ppm[$index - $r]; # Fälle aufsummieren
$summe_tote_neu_ppm[14] += $tote_neu_ppm[$index - $r]; # Fälle aufsummieren
}
// Regression 14
$yquer = $summe_faelle_neu_ppm[14] / 14;
$xquer = 120 / 14;
$summe_xy = 0;
$summe_xx = 0;
for ( $r = 0; $r < 14; $r++ ) {
$yi = $faelle_neu_ppm[$index - $r];
$xi = $r + 1;
$summe_xy += ( $xi - $xquer ) * ( $yi - $yquer );
$summe_xx += ( $xi - $xquer ) * ( $xi - $xquer );
}
$reg14_faelle_ppm = $summe_xy / $summe_xx;
$reg14b_faelle_ppm = $yquer - ( $reg14_faelle_ppm * $xquer );
$summe_faelle_neu_abs[28] = 0;
$summe_tote_neu_abs[28] = 0;
$summe_impfungen_neu_abs[28] = 0;
$summe_faelle_neu_ppm[28] = 0;
$summe_tote_neu_ppm[28] = 0;
for ( $r = 0; $r < 28; $r++ ){ # für r = 1 - 28 (die letzten 28 Datensätze)
$summe_faelle_neu_abs[28] += $faelle_neu_abs[$index - $r]; # Fälle aufsummieren
$summe_tote_neu_abs[28] += $tote_neu_abs[$index - $r];
$summe_impfungen_neu_abs[28] += $impfungen_neu_abs[$index - $r];
$summe_faelle_neu_ppm[28] += $faelle_neu_ppm[$index - $r];
$summe_tote_neu_ppm[28] += $tote_neu_ppm[$index - $r];
}
// Regression 28
$yquer = $summe_faelle_neu_ppm[28] / 28;
$xquer = 406 / 28;
$summe_xy = 0;
$summe_xx = 0;
for ( $r = 0; $r < 28; $r++ ) {
$yi = $faelle_neu_ppm[$index - $r];
$xi = $r + 1;
$summe_xy += ( $xi - $xquer ) * ( $yi - $yquer );
$summe_xx += ( $xi - $xquer ) * ( $xi - $xquer );
}
$reg28_faelle_ppm = $summe_xy / $summe_xx;
$reg28b_faelle_ppm = $yquer - ( $reg28_faelle_ppm * $xquer );
// Ausgabe
$tmp = str_replace('"', '', $array[$x][0]); # Anführungszeichen entfernen
$array_erweitert[0] = rtrim($liste_laender_iso_de["$tmp"]); # deutsche Namen
$array_erweitert[1] = $summe_faelle_neu_abs[7]; # Summe Fälle7 neu
$array_erweitert[2] = $summe_faelle_neu_abs[14]; # Summe Fälle14 neu
$array_erweitert[3] = $summe_faelle_neu_abs[28]; # Summe Fälle28 neu
$array_erweitert[4] = round($summe_faelle_neu_abs[7] / 7, 2); # GD 7
$array_erweitert[5] = round($summe_faelle_neu_abs[14] / 14, 2); # GD 14
$array_erweitert[6] = round($summe_faelle_neu_abs[28] / 28, 2); # GD 28
$array_erweitert[7] = $summe_tote_neu_abs[7]; # Summe Tote7
$array_erweitert[8] = $summe_tote_neu_abs[14]; # Summe Tote14
$array_erweitert[9] = $summe_tote_neu_abs[28]; # Summe Tote28
$array_erweitert[10] = round($summe_tote_neu_abs[7] / 7, 2); # GD 7
$array_erweitert[11] = round($summe_tote_neu_abs[14] / 14, 2); # GD 14
$array_erweitert[12] = round($summe_tote_neu_abs[28] / 28, 2); # GD 28
$array_erweitert[13] = $summe_faelle_neu_ppm[7]; # Summe Fälle7 neu
$array_erweitert[14] = $summe_faelle_neu_ppm[14]; # Summe Fälle14 neu
$array_erweitert[15] = $summe_faelle_neu_ppm[28]; # Summe Fälle28 neu
$array_erweitert[16] = round($summe_faelle_neu_ppm[7] / 7, 2); # GD 7
$array_erweitert[17] = round($summe_faelle_neu_ppm[14] / 14, 2); # GD 14
$array_erweitert[18] = round($summe_faelle_neu_ppm[28] / 28, 2); # GD 28
$array_erweitert[19] = $summe_tote_neu_ppm[7]; # Summe Tote7
$array_erweitert[20] = $summe_tote_neu_ppm[14]; # Summe Tote14
$array_erweitert[21] = $summe_tote_neu_ppm[28]; # Summe Tote28
$array_erweitert[22] = round($summe_tote_neu_ppm[7] / 7, 2); # GD 7
$array_erweitert[23] = round($summe_tote_neu_ppm[14] / 14, 2); # GD 14
$array_erweitert[24] = round($summe_tote_neu_ppm[28] / 28, 2); # GD 28
$array_erweitert[25] = $reg14_faelle_ppm; # REG14 Fälle neu
$array_erweitert[26] = $reg14b_faelle_ppm; # REG14 Fälle neu
$array_erweitert[27] = $reg28_faelle_ppm; # REG28 Fälle neu
$array_erweitert[28] = $reg28b_faelle_ppm; # REG28 Fälle neu
# Wenn sich die ISO-Codes unterscheiden (zeichen für Tabellenwechsel)
if ( $array[$x][0] == $genesene[$x - 14][1]){
$array_erweitert[29] = $genesene[$x - 14][0]; # Genesene (ppm)
} else {
$array_erweitert[29] = 0;
}
$array_erweitert[30] = round($summe_impfungen_neu_abs[14] * 1000000 / ( 14 * $array[$x][48]), 2); # GD 14 Impfungen ppm
$array_erweitert[31] = round($summe_impfungen_neu_abs[7] * 1000000 / $array[$x][48], 2); # Summe Impfungen7 neu ppm
$array_erweitert[32] = round($summe_impfungen_neu_abs[28] * 1000000 / $array[$x][48], 2); # Summe Impfungen28 neu ppm
if ( $array[$x][0] == "iso_code" ) {
$array_erweitert = array ("Land deutsch", # 25
"Sum_Faelle_neu_7_abs", # 26
"Sum_Faelle_neu_14_abs", # 27
"Sum_Faelle_neu_28_abs", # 28
"GD_Faelle_neu_7_abs", # 29
"GD_Faelle_neu_14_abs", # 30
"GD_Faelle_neu_28_abs", # 31
"Sum_Tote_neu_7_abs", # 32
"Sum_Tote_neu_14_abs", # 33
"Sum_Tote_neu_28_abs", # 34
"GD_Tote_neu_7_abs", # 35
"GD_Tote_neu_14_abs", # 36
"GD_Tote_neu_28_abs", # 37
"Sum_Faelle_neu_7_ppm", # 38
"Sum_Faelle_neu_14_ppm", # 39
"Sum_Faelle_neu_28_ppm", # 40
"GD_Faelle_neu_7_ppm", # 41
"GD_Faelle_neu_14_ppm", # 42
"GD_Faelle_neu_28_ppm", # 43
"Sum_Tote_neu_7_ppm", # 44
"Sum_Tote_neu_14_ppm", # 45
"Sum_Tote_neu_28_ppm", # 46
"GD_Tote_neu_7_ppm", # 47
"GD_Tote_neu_14_ppm", # 48
"GD_Tote_neu_28_ppm", # 49
"Reg14_Faelle_neu_ppm", # 50
"Reg14b_Faelle_neu_ppm", # 51
"Reg28_Faelle_neu_ppm", # 52
"Reg28b_Faelle_neu_ppm", # 53
"Genesene_ppm", # 54
"GD_Impfungen_14_ppm", # 55
"Sum_Impfungen_7", # 56
"Sum_Impfungen_28" ); } # 57
$array_gefiltert = array( $array[$x][0], # 0 iso_code
$array[$x][1], # 1 continent
$array[$x][2], # 2 location
$array[$x][3], # 3 date
$array[$x][4], # 4 total_cases
$array[$x][5], # 5 new_cases
$array[$x][7], # 6 total_deaths
$array[$x][8], # 7 new deaths
$array[$x][10], # 8 total_cases_ppm
$array[$x][11], # 9 new_cases_ppm
$array[$x][13], # 10 total_deaths_ppm
$array[$x][14], # 11 new_deaths_ppm
$array[$x][25], #- 12 new_tests
$array[$x][26], #- 13 total_tests
$array[$x][27], #- 14 total_tests_per_thousand
$array[$x][28], #- 15 new_tests_per_thousand
$array[$x][34], #- 16 total_vaccs
$array[$x][35], #+ 17 people_vaccin
$array[$x][36], #+ 18 people_fully_vaccinated
$array[$x][38], #+ 19 new_vaccs
$array[$x][40], #- 20 total_vaccs_per_thousand
$array[$x][41], #+ 21 people_vac_per_hundred
$array[$x][42], #+ 22 people_fully_vac_per_hundred
$array[$x][48], # 23 population
trim($array[$x][49]) ); # 24 pop_density -- trim() ist notwendig um den Zeilenumbruch zu entfernen
# die beiden Teil-Arrays zusammenführen
$ausgabe = array_merge($array_gefiltert, $array_erweitert);
fputcsv($ausgabedatei, $ausgabe);
$index++;
$index2++;
$land_tmp = $array[$x][2];
$x++;
}
fclose($ausgabedatei);
unset($input);
# alle Variablen leeren
foreach (array_keys($GLOBALS) as $k) unset($$k);
unset($k);
// Anführungszeichen aus der Datenbank entfernen (werden durch fputcsv eingefügt)
$input = file("corona_daten_tmp.csv");
# Ausgabedatei öffnen
$ausgabedatei2 = fopen("corona_daten.csv","w");
foreach ($input as $zeile) { fwrite($ausgabedatei2, str_replace('"', '', $zeile)); }
fclose($ausgabedatei2);
unset($input);
?>
includes/datenbank_reduzieren.php<?php
# original Datenbank einlesen
$input_owid = file("corona_owid.csv");
# Ausgabedatei für reduzierte Datenbank öffnen oder erzeugen
$ausgabe_tmp = fopen("corona_owid_red.csv", "w");
# von jeder Zeile nur die ersten 50 Einträge verwenden
for ( $x = 0; $x <= count($input_owid); $x++ ){
$zeile = explode(",", $input_owid[$x]);
if ( preg_match("/OWID_(HIC|LIC|LMC|UMC|ENG|NIR)/i", $zeile[0]) != 1 ) {
for( $k = 0; $k <= 48; $k++ ){
$ausgabezeile[$k] = $zeile[$k];
}
$ausgabezeile[49] = $zeile[62];
fputcsv($ausgabe_tmp, $ausgabezeile);
}
}
fclose($ausgabe_tmp);
unset($input_owid);
?>
dokumentation.php<?php
# interner Verweis
$seitenverweis = "zusammenfassung";
$laenderverweis = "DEU";
# Kopfteil einbinden
include ("./includes/header.php");
?>
<h2>Die Datenquelle</h2>
<p>Die Rohdaten stammen von <a href="https://ourworldindata.org/" target="_blank"><br/>
https://ourworldindata.org/</a></p>
<p>Die Datenbank kann unter <br/>
<a href="https://ourworldindata.org/coronavirus-data" target="_blank">https://ourworldindata.org/coronavirus-data</a><br/>
abgerufen werden</p>
<br/>
<h2>Der Quelltext</h2>
<?php
# Liste mit auszugebenden Dateien
$liste = array("includes/header.php",
"layout.css",
"verteilung_tabellen.js",
"index.php",
"zusammenfassung.php",
"verteilung_tabellen.php",
"verteilung_diagramme.php",
"includes/zeitreihe_aktive_infektionen.php",
"includes/zeitreihe_differential.php",
"includes/zeitreihe_gesamtinfektionen.php",
"includes/zeitreihe_impfungen.php",
"includes/zeitreihe_neuinfektionen_gesamt.php",
"zeitreihen_tabellen.php",
"zeitreihen_diagramme.php",
"zeitreihen_diagramme_4wochen.php",
"zeitreihen_diagramme_8wochen.php",
"zeitreihen_diagramme_wochensumme.php",
"zeitreihen_diagramme_monatssumme.php",
"zeitreihen_diagramme_vergleich.php",
"heatmap_wo2.php",
"includes/download.php",
"includes/datenbank_erweitern.php",
"includes/datenbank_reduzieren.php",
"dokumentation.php",
"includes/footer.php");
foreach ($liste as $dateiname){
echo "<a href='#$dateiname'>$dateiname</a><br>\n";
}
# Für jedes Element des Arrays $liste (für jeden Dateinamen)
foreach ($liste as $dateiname){
# den Inhalt der Datei mit dem aktuellen Namen in $datei_inhalt schreiben
$datei_inhalt = file($dateiname);
# den Namen der Datei als Überschrift der Ebene 3 ausgeben
echo "<div id='$dateiname'><h3>$dateiname</h3>\n";
# HMTL-Tag zur Darstellung von Quellcode
echo "<pre>";
# für jede Zeile des aktuellen Dateiinhaltes
foreach ($datei_inhalt as $zeile){
# den Inhalt ausgeben, wobei HTML-Tags in HTML Entities umgewandelt werden
echo htmlentities($zeile);
}
# Tag schliessen
echo "</pre>\n";
}
# Fussteil einbinden
include ("./includes/footer.php");
?>
|