Gnuplot: Wie laden und anzeigen einzelner numerischer Wert aus der Daten-Datei
Meine Daten-Datei hat diesen Inhalt
# data file for use with gnuplot
# Report 001
# Data as of Tuesday 03-Sep-2013
total 1976
case1 522 278 146 65 26 7
case2 120 105 15 0 0 0
case3 660 288 202 106 63 1
Mache ich ein Histogramm von dem Fall... Zeilen, die mit dem Skript unten - und das funktioniert. Meine Frage ist: wie kann ich laden Sie die grand Gesamtwert 1976 (neben dem Wort 'Summe') aus der Daten-Datei und entweder (a) speichern Sie in eine variable oder (b) verwenden Sie es direkt im Titel des plot?
Dies ist mein gnuplot-script:
reset
set term png truecolor
set terminal pngcairo size 1024,768 enhanced font 'Segoe UI,10'
set output "output.png"
set style fill solid 1.00
set style histogram rowstacked
set style data histograms
set xlabel "Case"
set ylabel "Frequency"
set boxwidth 0.8
plot for [i=3:7] 'mydata.dat' every ::1 using i:xticlabels(1) with histogram \
notitle, '' every ::1 using 0:2:2 \
with labels \
title "My Title"
Zugunsten der anderen, die versuchen zu label-Histogramme, in meine Daten-Datei, die Spalte nach dem Fall label repräsentiert die Summe der rest der Werte auf die Zeile. Jene Summe zahlen angezeigt werden am oberen Rand jeder Histogramm bar. Zum Beispiel für case1, 522 ist die Summe (278 + 146 + 65 + 26 + 7).
Möchte ich die Anzeige der Gesamtsumme irgendwo auf meiner Karte, sagen, wie die zweite Zeile des Titels oder in einem label. Kann ich eine variable in sprintf in den Titel, aber ich habe nicht herausgefunden syntax zum laden einer "Zelle" Wert ("Zelle" bedeutet row-Spalte-Kreuzung) in eine variable.
Alternativ, wenn mir jemand sagen kann, wie die sum-Funktion, um insgesamt bis 522+120+660 (Lesen Sie aus den Daten der Datei, nicht als Konstanten!) und speichern, die Summe in eine variable, das würde vermeiden das müssen die Gesamtsumme der Daten-Datei, und das würde mich auch sehr glücklich.
Vielen Dank.
InformationsquelleAutor user424855 | 2013-09-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fangen wir mit dem extrahieren eine einzelne Zelle an der Position (row,col). Wenn es einen einzigen Werte, die Sie verwenden können, die
stats
Befehl zum extrahieren der Werte. Dierow
undcol
angegeben mitevery
undusing
, wie in einem plot-Befehl. In Ihrem Fall, extrahieren Sie die gesamte Wert:Zur Summe aller Werte in der zweiten Spalte verwenden:
Sind und sich schließlich die Summe aller Werte in den Spalten
3:7
in allen Zeilen (D. H. der gleiche wie der Vorherige Befehl, aber ohne Verwendung der gespeicherten Summen) verwenden:Diese Befehle erfordern gnuplot 4.6 arbeiten.
So, Ihr plotting-Skript könnte wie folgt Aussehen:
welche gibt die folgende Ausgabe:
Immer ein Vergnügen zu Lesen Ihre Gnuplot related posts, sehr nützliche Sachen 🙂
Was ist der Doppelpunkt : syntax? Ich verstehe nicht, was ::::0 oder ::1 machen soll - könnte jemand es mir erklären?
Das ist in der Dokumentation beschrieben, von
every
im AbschnittPlot -> data -> every
finden Sie unter gnuplot.info/docs_5.0/...InformationsquelleAutor Christoph
Die für linux und ähnliche.
Wenn Sie nicht wissen, die Nummer der Zeile, wo sich Ihre Daten befinden, aber Sie wissen, es ist in der n-TEN Spalte einer Zeile, wo der Wert der m-TEN Spalte ist x können Sie eine Funktion definieren, die
und dann verwenden Sie es, zum Beispiel, als
Verwendung von Daten, die von user424855
zurückkehren sollte
15
get_data(m,x,n,filename)=system('awk "\$'.m.'==\"'.x.'\"{print \$'.n.'}" '.filename)
.danke, es ist korrigiert jetzt 🙂
InformationsquelleAutor boclodoa