Wenn Sie eine lange Textdatei haben und alle Zeilen anzeigen möchten, in denen ein bestimmtes Muster vorkommt, mache ich Folgendes:
grep -n form innsmouth.txt | cut -d : -f1
Jetzt habe ich eine Folge von Zahlen (eine Zahl pro Zeile)
Ich möchte eine grafische 2D-Darstellung mit dem Vorkommen auf der x-Achse und der Liniennummer auf der y-Achse erstellen. Wie kann ich das erreichen?
command-line
graphics
Abdul Al Hazred
quelle
quelle
Antworten:
Sie könnten dafür verwenden
gnuplot
:produziert so etwas wie
Sie können die Darstellung des Diagramms nach Herzenslust konfigurieren und in verschiedenen Bildformaten usw. ausgeben.
quelle
gnuplot
odergnuplot-x11
? Wenn erstere vorhanden sind, werden nur Dateien ausgegeben (dh PDF-, PNG- usw. Dateien erstellt ) und keine interaktiven Zeichnungen direkt auf dem Bildschirm.seq 100 >seq.dat
und danngnuplot
interaktiv und an der Eingabeaufforderung ausführenplot "seq.dat"
?Failed to initialize wxWidgets.
mit gnuplot-x11 ... Muss ich den einen oder anderen haben? oder können beidegnuplot
undgnuplot-x11
installiert werden?notitle
, ohne den Titel zu zeichnen.Ich würde dies in tun
R
. Sie müssen es installieren, aber es sollte in Ihren Distributions-Repositories verfügbar sein. Führen Sie für Debian-basierte SystemeDas sollte auch einfließen,
r-base-core
aber wenn nicht, läuft essudo apt-get install r-base-core
auch. Nach derR
Installation können Sie ein einfaches R-Skript dafür schreiben:Das obige Skript erstellt eine Datei mit dem Namen
output.pdf
. Ich habe wie folgt getestet:Aus den Zufallsdaten, die ich verwendet habe, ergibt sich:
Ich bin mir nicht ganz sicher, was Sie zeichnen wollen, aber das sollte Sie zumindest in die richtige Richtung weisen.
quelle
#!/usr/bin/env Rscript; args <- commandArgs(TRUE); a<-read.table(args[1]); plot(a$V2,a$V1,ylab="line number",xlab="value");
, um eine Rplots.pdf im selben Verzeichnis zu erzeugen.Wenn es sein kann, dass ein sehr einfacher Terminalausdruck ausreicht und Sie mit invertierten Achsen zufrieden sind, sollten Sie Folgendes berücksichtigen:
Das obige Diagramm zeigt einen invertierten Trend auf einer 10% -Skala für jedes Auftreten des Musters 11 in der Ausgabe von
seq 1000
.So was:
Mit Punkten und Vorkommensanzahl könnte es sein:
... was druckt ...
Sie könnten die Achsen wie in Ihrem Beispiel mit viel mehr Arbeit erhalten und
tput
- Sie müssten die\033[A
Escape-Operation (oder die mit Ihrem Terminal-Emulator kompatible Entsprechung) ausführen , um den Cursor bei jedem Auftreten eine Zeile nach oben zu bewegen.Wenn
awk
‚sprintf
unterstützt platz Polsterung wie die POSIX-Shell -printf
Fall ist, dann können Sie es verwenden , das gleiche zu tun - und wahrscheinlich weit effizienter als gut. Ich weiß jedoch nicht, wie man es benutztawk
.quelle
Die Antwort von Nate für die PDF-Ausgabe und zum Plotten von Linien verbessern (erfordert die
rsvg-convert
):quelle
Sie können die Standardausgabedaten auch über die Pipe an ein benutzerdefiniertes Python-Skript umleiten. Auf diese Weise können Sie die Daten immens individuell anpassen und flexibel analysieren, vorverarbeiten und visualisieren.
Hier ist ein Tutorial dazu, das ich geschrieben habe, um genau das zu tun, was Sie beabsichtigen. Verknüpfung
quelle