2016-03-31 11 views
2

Es ist einfach zu Etikettendatenpunkte in Gnuplot, in diesem Beispiel verwende ich die dritte Spalte als Etikett für diesen Datensatz (data.txt):Label-Datenpunkte für kumulatives Grundstück mit Gnuplot

1 -22 "Event 0" 
2 -139.7 "Event 3" 
3 -11 "Event 7" 
4 -35.2 "Event 6" 
5 -139.7 "Event 2" 
6 -139.7 "Event 4" 
7 -84.7 "Event 1" 
8 -22 "Event 9" 
9 -64.9 "Event 8" 
10 -38.5 "Event 5" 

gnuplot> plot 'data.txt' u 1:2, "" u 1:2:3 w labels rotate offset 1 

Dieser das Ergebnis wird (ich für diesen Zweck Ausgelassene Polieren): enter image description here

ich brauche aber die Datenpunkte durch kumulative Summe aufgetragen:

gnuplot> plot 'data.txt' u 1:2 smooth cumulative 

enter image description here

Nun, wie kann ich die Punkte an ihren neuen "Koordinaten" beschriften? So etwas wie dies funktioniert nicht (ich will die Etiketten nach unten in jedem Knie der kumulativen Kurve):

gnuplot> plot 'data.txt' u 1:2 s cum, "" u 1:2:3 s cum w labels offset 1 

enter image description here

Das Ergebnis sollte wie folgt aussehen (hier manuell geschnitten und positioniert mit Gimp): enter image description here

+0

Bitte senden Sie ein Beispiel Ihrer Daten. Insbesondere wäre es hilfreich zu wissen, wie Ihre Etiketten aussehen. Die Art, dies zu tun, wird sehr davon abhängen, wie diese aussehen. – Matthew

+0

Ich stimme @Matthew zu: Mit dem, was Sie schreiben, ist es unmöglich zu erraten, wie Sie auflösen, welches Etikett neben einem kumulierten Punkt gedruckt wird. – Joce

+0

Entschuldigung, jetzt habe ich versucht, es detaillierter und mit einem kleinen Beispiel zu erklären (nicht mein wirklicher Anwendungsfall, sondern 1: 1 von Gnuplot übertragbar). – smartmic

Antwort

1

Sie können Ihr kumulatives Diagramm in eine Datei plotten und diese geänderten Daten dann wie bei einer normalen Datendatei verwenden. Um die Etiketten den Zugriff auf die Einfügen-Befehl verwenden und die Verwendung von zusätzlichen Spalten machen:

set table "cumulative_labels" 
plot 'data.txt' u 1:2:3 smooth cumulative w labels 
set table "cumulative_data" 
plot 'data.txt' u 1:2 smooth cumulative 
unset table 
plot 'cumulative_data' u 1:2 w l, \ 
"< paste cumulative_labels cumulative_data" u 4:5:3 w labels offset 1 

Edit:

gnuplot-einzige Weg, dies zu tun, ohne Zwischendateien, aber fallen die smooth cumulative Option:

sum = 0. 
plot "data.txt" u 1:2 s cum, "" u (sum = sum + $2, $1):(sum):3 w labels offset 1 
+0

An die Person, die dies abgelehnt hat: Bitte schreiben Sie in Zukunft das Problem in den Kommentarbereich. Ich habe es bereits behoben, aber es dauerte eine Weile, bis ich erkannte, dass die Lösung nicht funktionierte. Ein Downvote ohne Kommentar, der auf das Problem hinweist, ist nicht sehr hilfreich. – Miguel

+0

Das funktioniert, danke. Der Nachteil ist, dass es 2 temporäre Dateien und einen externen Systembefehl beinhaltet. Kann jemand an eine rein "interne" Gnuplot-Lösung denken? – smartmic

+0

@smartmic Die Verwendung von 'smooth' stört oft Stiloptionen, wie in Ihrem Fall.Die Lösungen, die ich normalerweise selbst benutze, und die, die ich am häufigsten von anderen gesehen habe, beinhalten das Auslagern von Daten in externe Dateien und/oder die Verwendung externer Befehle. Das heißt, Sie könnten die Summe selbst erstellen, indem Sie die Daten im laufenden Betrieb analysieren (im Gegensatz zur "glatten kumulativen" Funktionalität. Siehe meine Bearbeitung für die Vorgehensweise. – Miguel