[solved] Graph erstellen

Smalltalk
Antworten
Benutzeravatar
The Hit-Man
Beiträge: 2171
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

[solved] Graph erstellen

Beitrag von The Hit-Man » 21.02.2023 05:34:20

Ich hatte mir eine kleine Log Datei erstellt die so aussieht:

Code: Alles auswählen

...
Mon Feb 20 23:11:18 UTC 2023     online
Mon Feb 20 23:12:20 UTC 2023     offline
Mon Feb 20 23:13:23 UTC 2023     offline
Mon Feb 20 23:14:25 UTC 2023     offline
Mon Feb 20 23:15:28 UTC 2023     offline
Mon Feb 20 23:16:30 UTC 2023     offline
Mon Feb 20 23:17:33 UTC 2023     offline
Mon Feb 20 23:18:36 UTC 2023     offline
Mon Feb 20 23:19:38 UTC 2023     offline
Mon Feb 20 23:20:41 UTC 2023     online
Mon Feb 20 23:21:43 UTC 2023     online
Mon Feb 20 23:22:46 UTC 2023     online
Mon Feb 20 23:23:49 UTC 2023     online
Mon Feb 20 23:24:51 UTC 2023     online
Mon Feb 20 23:25:54 UTC 2023     offline
Mon Feb 20 23:26:56 UTC 2023     offline
...
Für mich persönlich, reicht das auch so weit ... Nun würde ich den Inhalt dieser Datei, für nen Kollegen irgendwie grafisch ausgeben lassen. Vielleicht als .pdf, .html oder auch als Office Datei. Mein Problem ist, das ich mich noch nie mit so etwas beschäftigt habe. Hat da jemand von Euch, Erfahrung oder einen Denkanstoß?
Zuletzt geändert von The Hit-Man am 22.02.2023 06:54:44, insgesamt 1-mal geändert.
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Graph erstellen

Beitrag von MSfree » 21.02.2023 08:05:08

..,dass ich mich noch nie mit so etwas beschäftigt habe.
Noch nie mit Programmierung oder noch nie mit Graphik?

Du könntest eine SVG-Datei mit Python erstellen.

Benutzeravatar
The Hit-Man
Beiträge: 2171
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Re: Graph erstellen

Beitrag von The Hit-Man » 21.02.2023 08:10:26

Noch nie mit Programmierung oder noch nie mit Graphik?
Klar, programmiere in Python so manches in pygame oder so. Aber Diagramme oder so was in der Art habe ich eben gar keine Ahnung von. Wüßte gar nicht wie ich da anfangen sollte.
Dachte man könnte das 'mal eben' so zusammen klöppeln ...
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

Benutzeravatar
oln
Beiträge: 487
Registriert: 05.01.2021 09:41:24

Re: Graph erstellen

Beitrag von oln » 21.02.2023 08:28:17

Moin,
simpel geht es mit gnuplot. Aber deine Daten sagen ja nur an oder aus. Was willst du denn für eine Darstelleung?
Gruß Ole
AbuseIPDB

Benutzeravatar
TRex
Moderator
Beiträge: 8085
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Graph erstellen

Beitrag von TRex » 21.02.2023 09:35:47

Anhand der Daten vermute ich mal eine eindimensionale Balkendarstellung mit zB. Farbencoding für online/offline, x-Achse Zeit?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Graph erstellen

Beitrag von uname » 21.02.2023 10:32:20

Es ist zwar eigentlich nur eindimensional aber dann vielleicht doch etwas sehr lang über den Tag gesehen.
Ich würde es daher eher in einer Zwei-Farben-Darstellung in einer 24x60-Struktur für jeden Tag abbilden.

Code: Alles auswählen

00:00 ... 00:59
01:00 ... 01:59
...
22:00 ... 22:59
23:00 ... 23:59

Benutzeravatar
The Hit-Man
Beiträge: 2171
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Re: Graph erstellen

Beitrag von The Hit-Man » 21.02.2023 13:11:11

Moin,
simpel geht es mit gnuplot. Aber deine Daten sagen ja nur an oder aus. Was willst du denn für eine Darstelleung?
Ich glaube die X achse sollte die zeit an zeigen und dann immer ein roter Balken für online und einen grünen Balken für offline. Ich glaube daran könnte man dann gut erkennen, wie lange das Gerät online war und wie lange es offline war.


|
|
|
| grrrggg
| grrrggg
+----------------------------- Zeit

Wie breit der Graph dann wird, ist eher egal ...
Anhand der Daten vermute ich mal eine eindimensionale Balkendarstellung mit zB. Farbencoding für online/offline, x-Achse Zeit?
Ich glaube, wir meinen das Gleiche.
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

Benutzeravatar
The Hit-Man
Beiträge: 2171
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Re: Graph erstellen

Beitrag von The Hit-Man » 21.02.2023 13:24:01

Bild
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Graph erstellen

Beitrag von uname » 21.02.2023 15:20:09

Ein Tag hat 24x60 = 1440 Minuten. Bei 1 mm Breite für jede Minute (was schon wenig ist), benötigst du 1.44m für einen Tag, wo nicht mal die breite Seite eines DIN A0 - Papiers ausreicht.

Benutzeravatar
TRex
Moderator
Beiträge: 8085
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Graph erstellen

Beitrag von TRex » 21.02.2023 15:33:24

Richtig, darum wärs jetzt interessant, ob man das erkennen können muss, wenn mal ne Minute das Netz weg war (zB weil du das Ergebnis deinem ISP unter die Nase halten willst, der ein massiv unzuverlässiges Netz mit dem vollen Preis anbietet) oder obs eher wichtig ist, das für den ganzen Tag maßstabsgerecht sehen zu können. Also irgendwo muss man vermutlich zurückstecken. Man könnte auch die Rasterung verkleinern, und beispielsweise "betroffene" 15-Minuten-Segmente gelb bis rot einfärben, je nach Anteil der Netzverfügbarkeit.

Wenn ich mit meinem Verdacht richtig liege, wärst du evt. auch mit Debiansmokeping gut bedient ;) Oder auch nur als Vorlage, wie man sowas darstellen könnte.

3975
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

reox
Beiträge: 2464
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: Graph erstellen

Beitrag von reox » 21.02.2023 19:38:51

Oder sowas:

Code: Alles auswählen

import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import math

from typing import List, Tuple


def parse_data(data: str) -> List[Tuple[datetime, bool]]:
    res = []
    for line in data.splitlines():
        if line.strip() == "":
            continue
        date, state = line.rsplit(" ", 1)
        assert state in ["online", "offline"]
        state = state == "online"
        date = datetime.strptime(date.strip(), "%a %b %d %H:%M:%S %Z %Y")
        res.append((date, state))
    return res


def plot_state(data: List[Tuple[datetime, bool]], binwidth: timedelta = timedelta(seconds=60)) -> None:
    on = [x for x, y in data if y]
    off = [x for x, y in data if not y]
    min_time = min([x for x, _ in data])
    max_time = max([x for x, _ in data]) + binwidth
    n_bins = math.floor((max_time - min_time).seconds / binwidth.seconds)
    bins = [min_time + binwidth * i for i in range(n_bins)]
    plt.hist([on, off], bins, stacked=True)
    plt.yticks([])
    plt.show()


if __name__ == "__main__":
    x = """
    Mon Feb 20 23:11:18 UTC 2023     online
    Mon Feb 20 23:12:20 UTC 2023     offline
    Mon Feb 20 23:13:23 UTC 2023     offline
    Mon Feb 20 23:14:25 UTC 2023     offline
    Mon Feb 20 23:15:28 UTC 2023     offline
    Mon Feb 20 23:16:30 UTC 2023     offline
    Mon Feb 20 23:17:33 UTC 2023     offline
    Mon Feb 20 23:18:36 UTC 2023     offline
    Mon Feb 20 23:19:38 UTC 2023     offline
    Mon Feb 20 23:20:41 UTC 2023     online
    Mon Feb 20 23:21:43 UTC 2023     online
    Mon Feb 20 23:22:46 UTC 2023     online
    Mon Feb 20 23:23:49 UTC 2023     online
    Mon Feb 20 23:24:51 UTC 2023     online
    Mon Feb 20 23:25:54 UTC 2023     offline
    Mon Feb 20 23:26:56 UTC 2023     offline
        """
    plot_state(parse_data(x))
3976

Die binsize kann man einstellen - ist halt ein bissi hingepfuscht, das geht sicher auch schöner

Benutzeravatar
The Hit-Man
Beiträge: 2171
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Re: Graph erstellen

Beitrag von The Hit-Man » 22.02.2023 06:54:18

Danke, Danke, Leute ;) Genau so mache ich es ...
Schade, das ich dieses Programm nur ein mal brauchen werde. Ging ja da drum, dem Kollegen das nen bischen zu visualisieren. Mit der reinen Textdatei kann der natürlich nicht viel anfangen. Weil so in Richtung Computer hat er ja keine Ahnung.
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

Antworten