Ich habe ein paar Daten.Gnuplot kumulative Spalte Frage
#Time Distance
1 3
2 5
4 9
8 11
12 17
14 20
16 34
20 40
Ich mag die kumulative Abstand wrt Zeit in gnuplot plottet ... (es sollte einfach sein), aber ich weiß nicht, wie.
x
Ich habe ein paar Daten.Gnuplot kumulative Spalte Frage
#Time Distance
1 3
2 5
4 9
8 11
12 17
14 20
16 34
20 40
Ich mag die kumulative Abstand wrt Zeit in gnuplot plottet ... (es sollte einfach sein), aber ich weiß nicht, wie.
x
Ich habe ein wenig Erfahrung mit Gnuplot und ich brütete gerade über die Dokumentation einiger. Leider konnte ich beim Plotten keine Lösung zum Generieren einer kumulativen Summe finden.
Ich denke, was Sie tun müssen, ist Ihre Daten mit einem anderen Programm zu massieren, bevor Sie Gnuplot lassen. awk ist ein Programm, das in den Sinn kommt, es ist praktisch gebaut, um mit spaltenförmigen Daten zu fummeln. Sie können diesen Prozess in den Plotvorgang integrieren, indem Sie these instructions folgen.
@Carl, tut mir leid, ich habe versehentlich Ihre Antwort implementiert! Ich wünschte, SO wäre etwas schneller mit diesen "Neue Antwort Posted" Nachrichten. – Mark
Es tut mir leid, ich bin geschmeichelt, dass mein Vorschlag ist, was für Sie gearbeitet hat! Glückliches Hacken. –
Ihre Daten Angenommen, in einer Datei „test.txt“, wie etwa:
plot "<awk '{i=i+$2; print $1,i}' test.txt" with lines
Danke ... Ich werde es versuchen. – Xofo
Ich habe festgestellt, dass DIESE nicht sauber funktioniert, wenn Sie FLOATING POINT PAIRS haben.Der Fehler I erhielt, war: awk: (Dateiname = out.txt FNR = 131) fatal: Druck auf "Standard-Ausgabe" nicht bestanden (Broken pipe) ^ Bad Daten auf Leitung 1 --- – Xofo
Hm, I habe es gerade mit Floats probiert und es hat für mich geklappt. Was ist in deiner Leitung 1? Ist es der Header? Versuchen Sie vielleicht, das zu entfernen. – Mark
Das gleiche gilt von der „kumulativen“ Variante der „smooth“ Option erreicht wird (nur help smooth
in gnuplot eingeben).
Für alle noch für diese Art der Sache suchen, wenn Ihre gnuplot-Version 4.4 oder höher ist, können Sie folgendes tun:
a=0
#gnuplot 4.4+ functions are now defined as:
#func(variable1,variable2...)=(statement1,statement2,...,return value)
cumulative_sum(x)=(a=a+x,a)
plot "test.dat" using 1:(cumulative_sum($2))
Ich führe gnuplot 4.4 Patchlevel 2, Ihr Skript führt zu einer "undefinierten Variable: ein" Fehler für mich. – Thomas
@Thomas - Sind Sie sicher, dass Sie sich an die 'a = 0' oben erinnert haben? – mgilson
Ups, ich kann nicht glauben, dass ich das nicht gesehen habe. Es funktioniert gut. Danke, Kumpel, jetzt fühle ich mich dumm. :-) – Thomas
Wenn Sie Ihre Daten in der Datei Daten-Datei ist, können Sie eine kumulative tun Grundstück in etwa so:
$ gnuplot
gnuplot> plot "datafile" smooth cumulative
Dies ist nicht das, was die Frage nach sucht, sondern „gnuplot Funktion kumulative Verteilung“ immer führt mich hier und keine der Antworten ist ganz richtig, wenn Sie bereits die Daten gnuplot haben erwartet.
Angenommen, Sie wollten eine kumulative Verteilungsfunktion von nur Entfernungen und haben nur die rohen Entfernungen. Es gibt einen kleinen Trick, mit dem gnuplot die y
Werte berechnen kann:
test.dat
:
#Time Distance
1 3
2 5
4 9
8 11
12 17
14 20
16 34
20 40
plot.gpi
:
datafile = test.dat
stats datafile
plot datafile using 2:(1./STATS_records) smooth cumulative title "distance"
Es ist nicht so flexibel wie mit den ganzen Daten, obwohl.
Hmm ... die Spalten wurden in HTML formatiert ... okay ... bitte nehmen Sie jedes Zeilenpaar als Spaltenpaar ... x – Xofo
Okay, jemand hat es repariert ... aah die Freude, ein SO-Noob zu sein . – Xofo
@Xofo, fügen Sie einfach 4 Leerzeichen vor jeder Zeile hinzu und die Zeichen sind gleichmäßig verteilt. Es gibt mehr Lösungen, aber das funktioniert ;-). Und willkommen in SO. –