Zeichnen Sie Daten einfach in Shell und Python

Einführung

Es ist oft einfach und oft groß, die regelmäßig erfassten Daten grafisch darzustellen. Ich denke jedoch, dass die Hürden für unerfahrene Menschen hoch sind, deshalb hoffe ich, einen Zugang zu bieten. (Der Rest ist Python Mission)

Grafische Meminfo

Lassen Sie uns als Beispiel die Informationen von / proc / meminfo grafisch darstellen, die regelmäßig mit Shell und Python erfasst werden.

Es wird davon ausgegangen, dass die Meminfo-Informationen im Format " / <Stunde, Minute, Sekunde> / meminfo.log" gespeichert sind (Beispiel: "20160224/105312 / meminfo.log").

Das Format von meminfo sieht so aus

MemTotal:         511476 kB
MemFree:          269240 kB
Buffers:           13936 kB
Cached:            56044 kB
SwapCached:            0 kB
Active:            36944 kB
Inactive:          47324 kB
Active(anon):      14648 kB
Inactive(anon):      208 kB
Active(file):      22296 kB
Inactive(file):    47116 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:             0 kB
HighFree:              0 kB
LowTotal:         511476 kB
LowFree:          269240 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         14304 kB
Mapped:            16548 kB
Shmem:               568 kB
Slab:               7416 kB
SReclaimable:       2600 kB
SUnreclaim:         4816 kB
KernelStack:         504 kB
PageTables:          784 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      255736 kB
Committed_AS:     195212 kB
VmallocTotal:    1548288 kB
VmallocUsed:        8428 kB
VmallocChunk:    1350896 kB

Angenommen, Sie möchten den Wert von "Committed_AS" in meminfo grafisch darstellen

$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS

Dann wird die folgende Ausgabe erhalten.

./20160211/190409/meminfo.log:Committed_AS:     389260 kB
./20160211/191528/meminfo.log:Committed_AS:     389300 kB
./20160211/192648/meminfo.log:Committed_AS:     394600 kB

Dies wird von gawk weiter verarbeitet, um "Datumsnummer" zu formatieren.

$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS | gawk 'match($0, /\/([0-9]+)\/([0-9]+).*[0-9]+ kB/, a) {print a[1] a[2], $2}'
20160211190409 389260
20160211191528 389300
20160211192648 394600

Dann zeichnen Sie dies mit Matplot

plot_date.py


#!/usr/bin/env python3 

import matplotlib.pyplot as plt

from datetime import datetime as dt

import sys

[date, y] = zip(*[l.split() for l in sys.stdin])
date=[dt.strptime(d, "%Y%m%d%H%M%S") for d in date]

plt.plot(date,y)

plt.show()
$ find . -name 'meminfo.log' | sort | xargs grep Committed_AS | gawk 'match($0, /\/([0-9]+)\/([0-9]+).*[0-9]+ kB/, a) {print a[1] a[2], $2}' | python3 plot_date.py

mem_plot.png

Recommended Posts

Zeichnen Sie Daten einfach in Shell und Python
Hashing von Daten in R und Python
Zeichnen Sie Zeitreihendaten in Python mit Pandas und Matplotlib
Diagrammzeichnung mit Python
Zeichnen Sie ein Diagramm mit Python
Python-Variablen und Datentypen, die mit Chemoinfomatik gelernt wurden
Empfangen und Anzeigen von HTML-Formulardaten in Python
Datenanalyse: Einfache Anwendung deskriptiver Statistiken und Schätzungsstatistiken auf CSV-Daten in Python
Behandeln Sie Umgebungsdaten in Python
Einfaches Formatieren von JSON mit Python
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Führen Sie Shell-Befehle in Python aus
Stapel und Warteschlange in Python
Unittest und CI in Python
Ich habe ein gestapeltes Balkendiagramm mit matplotlib von Python erstellt und eine Datenbeschriftung hinzugefügt
Ausführen externer Shell-Skripte und -Befehle in Python
Zeichnen wir ein Diagramm der Poisson-Verteilung und der kumulativen Poisson-Verteilung in Python bzw. Java.
Holen Sie sich LeapMotion-Daten in Python.
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Unterschied zwischen list () und [] in Python
Unterschied zwischen == und ist in Python
Zeigen Sie Fotos in Python und HTML an
Lesen Sie die Protokollpufferdaten mit Python3
Sortieralgorithmus und Implementierung in Python
Führen Sie den Shell-Befehl / Python in R aus
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Behandeln Sie Daten im NetCDF-Format mit Python
Zuweisungen und Änderungen in Python-Objekten
Überprüfen und verschieben Sie das Verzeichnis in Python
Verschlüsselung mit Python: IND-CCA2 und RSA-OAEP
Funktionssynthese und Anwendung in Python
Exportieren und Ausgeben von Dateien in Python
Ali Buch in Python: Sec. 2-5 Graph
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Erstellen und lesen Sie Messagepacks in Python
[Python] [3D-Liniendiagramm] Mehrere Daten in einem Diagramm, Achsenwerte in Zeichen
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part1-
Verarbeitung zur Verwendung von notMNIST-Daten in Python (und versucht, sie zu klassifizieren)
Erstellen Sie Ihre eigene Diagrammstrukturklasse und deren Zeichnung mit Python
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part2-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part4-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part3-
Überlappende reguläre Ausdrücke in Python und Java
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Datenpipeline-Aufbau mit Python und Luigi
Unterschied in der Authentizität zwischen Python und JavaScript
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Module und Pakete in Python sind "Namespaces"
Vermeiden Sie verschachtelte Schleifen in PHP und Python
Dateneingabe / -ausgabe in Python (CSV, JSON)
Unterschiede zwischen Ruby und Python im Umfang
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Echte Werte und Eigenvektoren: Lineare Algebra in Python <7>
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Warteschlangen- und Python-Implementierungsmodul "deque"
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Gefaltetes Liniendiagramm und Skalierungslinie in Python
Unterschiede zwischen Python- und Java-Syntax