Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4705 > unrolled thread

Temperaturdaten / Chart (interpolieren)

Started byTim Ritberg <tim@server.invalid>
First post2021-05-28 22:04 +0200
Last post2021-05-31 14:28 +0200
Articles 8 — 4 participants

Back to article view | Back to de.comp.lang.php


Contents

  Temperaturdaten / Chart (interpolieren) Tim Ritberg <tim@server.invalid> - 2021-05-28 22:04 +0200
    Re: Temperaturdaten / Chart (interpolieren) Matthias P. Würfl <matthias@wuerfl.com> - 2021-05-29 03:51 -0700
      Re: Temperaturdaten / Chart (interpolieren) Tim Ritberg <tim@server.invalid> - 2021-05-29 13:33 +0200
        Re: Temperaturdaten / Chart (interpolieren) Matthias P. Würfl <matthias@wuerfl.com> - 2021-05-29 05:44 -0700
          Re: Temperaturdaten / Chart (interpolieren) Tim Ritberg <tim@server.invalid> - 2021-05-29 15:22 +0200
            Re: Temperaturdaten / Chart (interpolieren) Jan Novak <repcom@gmail.com> - 2021-05-31 09:51 +0200
              Re: Temperaturdaten / Chart (interpolieren) Tim Ritberg <tim@server.invalid> - 2021-05-31 10:35 +0200
    Re: Temperaturdaten / Chart (interpolieren) Arno Welzel <usenet@arnowelzel.de> - 2021-05-31 14:28 +0200

#4705 — Temperaturdaten / Chart (interpolieren)

FromTim Ritberg <tim@server.invalid>
Date2021-05-28 22:04 +0200
SubjectTemperaturdaten / Chart (interpolieren)
Message-ID<s8ricb$864$1@tota-refugium.de>
Hi!

Ich habe eine Mysql-Datenbank mit Temperaturwerten. Meßzeitpunkt ist 
immer eine Temperaturveränderung, also keine festen Intervalle.

Jetzt suche ich eine Möglichkeit einen Tagestemperaturverlauf anzeigen 
zu können.

(Mysql 8, PHP 7.4)

Tim

[toc] | [next] | [standalone]


#4706

FromMatthias P. Würfl <matthias@wuerfl.com>
Date2021-05-29 03:51 -0700
Message-ID<1b7ad36e-fb13-4e78-8da1-7d5c0626ce23n@googlegroups.com>
In reply to#4705
Tim Ritberg schrieb am Freitag, 28. Mai 2021 um 20:04:31 UTC:

> Ich habe eine Mysql-Datenbank mit Temperaturwerten. Meßzeitpunkt ist 
> immer eine Temperaturveränderung, also keine festen Intervalle. 
> 
> Jetzt suche ich eine Möglichkeit einen Tagestemperaturverlauf anzeigen 
> zu können. 

Das ist ja vergleichweise einfach. Du suchst Dir zu jedem gewünschten Ausgabezeitpunkt (z.B. jede volle Stunde) einfach den letzten vorhandenen Messzeitpunkt. fertig.


// Uhrzeiten als float im key mit den jeweiligen Temperaturen als value
$data = array(
    0 => 0, // um 0 Uhr wurde es 0 Grad
    3.5 => 1, // um halb 4 wurde es 1 Grad
    8.25 => 2, // morgens viertel nach 8 wurde es 2 Grad
    11.2 => 3, 
    14 => 2,
    20.15 =>1,
    23.5 => 0
);

function chartInterpolieren($chart){
    $newchart = array();
    for($h = 0; $h <=24 ; $h++){
        foreach($chart as $uhrzeit => $temperatur){
            if($uhrzeit <= $h){
                $newchart[$h]=$temperatur;
            }
        }
    }
    return $newchart;
}

Geringfügig komplizierter wird das erst, wenn Du wirklich "interpolieren" willst, wenn Du also nur weißt, dass es morgens um 2 noch 0 Grad war, Mittags um 12 dann aber 10 Grad und Du willst jetzt "dazuerfinden", wie da allmählich der Übergang war. 

[toc] | [prev] | [next] | [standalone]


#4707

FromTim Ritberg <tim@server.invalid>
Date2021-05-29 13:33 +0200
Message-ID<s8t8pc$5p7$1@tota-refugium.de>
In reply to#4706
Am 29.05.21 um 12:51 schrieb Matthias P. Würfl:
...
> 
> Geringfügig komplizierter wird das erst, wenn Du wirklich "interpolieren" willst, wenn Du also nur weißt, dass es morgens um 2 noch 0 Grad war, Mittags um 12 dann aber 10 Grad und Du willst jetzt "dazuerfinden", wie da allmählich der Übergang war.
> 

Ich möchte eigentlich einen schönen Temperatur-Graphen. Ich habe nunmal 
keine lineare Datensammlung. Zeitsprünge sähe in dem Graphen aber 
komisch aus.



Tim

[toc] | [prev] | [next] | [standalone]


#4708

FromMatthias P. Würfl <matthias@wuerfl.com>
Date2021-05-29 05:44 -0700
Message-ID<8bbb5190-70ac-49c0-abc8-9a841b6f0ad7n@googlegroups.com>
In reply to#4707
Tim Ritberg schrieb am Samstag, 29. Mai 2021 um 11:33:02 UTC:

> Ich möchte eigentlich einen schönen Temperatur-Graphen.

Dafür gibt's schöne Libraries, die sowas mit JS machen. Die bindet man in eine Website ein und die Rohdaten schickt man per JSON mit. Die Generierung des Graphen findet dann bei der Anzeige im Client statt. Das ist auch sinnvoll, denn so kann man die Interpolation auf die Auflösung des Endgerätes anpassen.

Grüße, Matthias

[toc] | [prev] | [next] | [standalone]


#4709

FromTim Ritberg <tim@server.invalid>
Date2021-05-29 15:22 +0200
Message-ID<s8tf68$9i0$1@tota-refugium.de>
In reply to#4708
Am 29.05.21 um 14:44 schrieb Matthias P. Würfl:

> Dafür gibt's schöne Libraries, die sowas mit JS machen. Die bindet man in eine Website ein und die Rohdaten schickt man per JSON mit. 

Darauf wollte ich hinaus, von JS habe ich nur leider keine Ahnung.

Tim

[toc] | [prev] | [next] | [standalone]


#4710

FromJan Novak <repcom@gmail.com>
Date2021-05-31 09:51 +0200
Message-ID<s924is$ctv$2@gwaiyur.mb-net.net>
In reply to#4709
Am 29.05.21 um 15:22 schrieb Tim Ritberg:
> Am 29.05.21 um 14:44 schrieb Matthias P. Würfl:
> 
>> Dafür gibt's schöne Libraries, die sowas mit JS machen. Die bindet man 
>> in eine Website ein und die Rohdaten schickt man per JSON mit. 
> 
> Darauf wollte ich hinaus, von JS habe ich nur leider keine Ahnung.


Ich kann dir hierfür wärmstens

https://www.chartjs.org

empfehlen.Sehr einfach einzubinden und richtig schöne Grafiken ...
Bin auch kein JS Spezialist, aber die Einbindung und erste Ergebnisse 
gingen razt-fatz ;-)

Jan

[toc] | [prev] | [next] | [standalone]


#4711

FromTim Ritberg <tim@server.invalid>
Date2021-05-31 10:35 +0200
Message-ID<s9273q$3l9$1@tota-refugium.de>
In reply to#4710
Am 31.05.21 um 09:51 schrieb Jan Novak:

> 
> Ich kann dir hierfür wärmstens
> 
> https://www.chartjs.org
> 
> empfehlen.Sehr einfach einzubinden und richtig schöne Grafiken ...
> Bin auch kein JS Spezialist, aber die Einbindung und erste Ergebnisse 
> gingen razt-fatz ;-)
> 
> Jan
> 
> 
Ich habe mit Google Charts was bauen können, leider nicht interpoliert.

Tim

[toc] | [prev] | [next] | [standalone]


#4712

FromArno Welzel <usenet@arnowelzel.de>
Date2021-05-31 14:28 +0200
Message-ID<ihk32nFjndrU1@mid.individual.net>
In reply to#4705
Tim Ritberg:

> Ich habe eine Mysql-Datenbank mit Temperaturwerten. Meßzeitpunkt ist 
> immer eine Temperaturveränderung, also keine festen Intervalle.
> 
> Jetzt suche ich eine Möglichkeit einen Tagestemperaturverlauf anzeigen 
> zu können.

Baue ein Array auf, was alle theoretischen Werte im Verlauf abdeckt.

Dann nimm' die Werte und verteile Sie in das Raster. Der Meßzeitpunkt
muss natürlich bekannt sein

Angenommen, Du hast die Werte aus der Datenbank in einem Array $values
mit jeweils Stunde und Wert:

<?php
$values =
[
    [ 'hour' => 0, 'value' => 2.4 ],
    [ 'hour' => 2, 'value' => 4.2 ],
    [ 'hour' => 3, 'value' => 7.7 ],
    [ 'hour' => 8, 'value' => 12.1 ],
    [ 'hour' => 9, 'value' => 12.7 ],
    [ 'hour' => 14, 'value' => 18.4 ],
];

$hour = 0;
while ($hour<24) {
    $dayValues[$hour] = 0;
    $hour++;
}

foreach ($values as $value) {
    $dayValues[$value['hour']] = $value['value'];
}

echo "Zeitreihe 0-23 Uhr:\n";
$hour = 0;
while ($hour<24) {
    printf("Wert um %d Uhr: %f\n", $hour, $dayValues[$hour]);
    $hour++;
}
?>

Wenn Du die "Lücken" in der Zeitreihe auffüllen willst, müsstest Du die
Quelldaten nach der Stunde aufsteigend sortieren und Dir dann beim
übertragen in das Ziel-Array bei jedem Schritt merken, was der letzte
Stundenwert war und ggf. vom letzten bis zum aktuellen Wert
interpolierte Werte eintragen.

-- 
Arno Welzel
https://arnowelzel.de

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.php


csiph-web