Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

gnuplot mit timeformat

22 views
Skip to first unread message

Jan Schmidt

unread,
Feb 9, 2023, 7:26:43 AM2/9/23
to
Hallo,

ich habe eine Zeitreihe, die ich via gnuplot darstellen möchte.

Format

2023-02-06 12:20:00,5.7

Dazu passt
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
plot "file" u 1:2

Zusätzlich möchte ich die Reihe mit der Vergangenheit vergleichen, also Die Zeitachse als Modulo betrachtet, z.B. täglich (dann geht die X-Achse von 0:00 bis 23:59) und für jeden Tag gibt es eine eigene Kurve, monatlich (von 1 0:00 bis 31 23:59), jährlich.

Wie könnte man sowas machen? Mir fällt nur ein, das Modulo via awk/perl, etc. zu erzeugen und in gnuplot timefmt entsprechend anpassen. Das würde ich aber gern vermeiden, weil dafür Zwischendateien erforderlich sind.

Laurenz Trossel

unread,
Feb 9, 2023, 11:43:15 AM2/9/23
to
On 2023-02-09, Jan Schmidt <jan.s...@gmx.de> wrote:
> Format
> 2023-02-06 12:20:00,5.7

> Zusätzlich möchte ich die Reihe mit der Vergangenheit vergleichen, also
> Die Zeitachse als Modulo betrachtet, z.B. täglich (dann geht die X-Achse
> von 0:00 bis 23:59) und für jeden Tag gibt es eine eigene Kurve,
> monatlich (von 1 0:00 bis 31 23:59), jährlich.
>
> Wie könnte man sowas machen? Mir fällt nur ein, das Modulo via awk/perl,
> etc. zu erzeugen und in gnuplot timefmt entsprechend anpassen. Das würde
> ich aber gern vermeiden, weil dafür Zwischendateien erforderlich sind.

set datafile separator ","
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set format x "%H:%M"
plot "file" using (int(timecolumn(1)) % 86400):2

http://gnuplot.info/docs_5.5/loc2768.html

Sieghard Schicktanz

unread,
Feb 9, 2023, 4:13:05 PM2/9/23
to
Hallo Jan,

Du schriebst am Thu, 9 Feb 2023 04:26:41 -0800 (PST):

> ich habe eine Zeitreihe, die ich via gnuplot darstellen möchte.
...
> Zusätzlich möchte ich die Reihe mit der Vergangenheit vergleichen,
> also Die Zeitachse als Modulo betrachtet, z.B. täglich (dann geht die

Naja, ersteres ist nicht so dasselbe wie letzteres...
Rechne halt Deine Zeitangaben in Zahlenwerte um (strptime),
"modularisier'" sie und rechne wieder zurück (strftime). Irgendwelche
Offsets wirst Du sicher sowieso einrechnen müssen, das kann dann mit
vorberechneten Konstanten im Zahlenbereich passieren.

> Wie könnte man sowas machen? Mir fällt nur ein, das Modulo via
> awk/perl, etc. zu erzeugen und in gnuplot timefmt entsprechend

Urx. gnuplot kann _alle_ arithmetischen C-Operatoren, _auch_ "%" für
"modulo", und sogar Exponentiation und anderes.
Aber warum vorhandenes nutzen, wenn man auch unnützen Aufwand treiben
kann...

--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------

Jan Schmidt

unread,
Feb 10, 2023, 6:29:13 AM2/10/23
to
passt perfekt. Danke
0 new messages