Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4705 > unrolled thread
| Started by | Tim Ritberg <tim@server.invalid> |
|---|---|
| First post | 2021-05-28 22:04 +0200 |
| Last post | 2021-05-31 14:28 +0200 |
| Articles | 8 — 4 participants |
Back to article view | Back to de.comp.lang.php
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
| From | Tim Ritberg <tim@server.invalid> |
|---|---|
| Date | 2021-05-28 22:04 +0200 |
| Subject | Temperaturdaten / 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]
| From | Matthias P. Würfl <matthias@wuerfl.com> |
|---|---|
| Date | 2021-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]
| From | Tim Ritberg <tim@server.invalid> |
|---|---|
| Date | 2021-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]
| From | Matthias P. Würfl <matthias@wuerfl.com> |
|---|---|
| Date | 2021-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]
| From | Tim Ritberg <tim@server.invalid> |
|---|---|
| Date | 2021-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]
| From | Jan Novak <repcom@gmail.com> |
|---|---|
| Date | 2021-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]
| From | Tim Ritberg <tim@server.invalid> |
|---|---|
| Date | 2021-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]
| From | Arno Welzel <usenet@arnowelzel.de> |
|---|---|
| Date | 2021-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