Wie punktiert man Daten?

9085
Juanjo Conti

Ich möchte eine Datei wie:

Name X Y a 1 2 b 4 1 s 3 3 

in einer XY-Grafik, wobei die XY-Punkte mit Name beschriftet sind.

Wie kann ich es tun? Ich denke, das geht mit gnuplot, aber ich konnte es noch nicht.

6
Ich bin ziemlich sicher, dass gnuplot das auch kann, aber ich bin kein Meister, sorry. :( Paul Nathan vor 14 Jahren 0

2 Antworten auf die Frage

6
mrucci

Mit dem folgenden Befehl gnuplot können Sie Etiketten mit einem bestimmten Abstand von den Punkten einfügen:

echo "plot 'file.dat' using 2:3 pt 2 notitle, '' using 2:3:1 with labels offset 0.5,0.5 notitle;" | gnuplot -persist 

Anmerkung: funktioniert nur, wenn gnuplot mit --enable-datastrings kompiliert wurde (danke an DaveParillo für die Klarstellung)

+1 schöne Vermeidung einer separaten Label-Datei. Ich habe es immer so gemacht und nicht gedacht, dass es einen anderen Weg gibt. DaveParillo vor 14 Jahren 0
FYI: Wenn dieses Beispiel für jemanden nicht funktioniert, ist der `labels'-Stil nur verfügbar, wenn gnuplot mit der Konfigurationsoption --enable-datastrings erstellt wird DaveParillo vor 14 Jahren 3
Wenn nicht verfügbar, sieht der Fehler wie "Nicht genügend Spalten für diesen Stil" aus? Ich denke, es ist hier nicht verfügbar, wo ich bin :( KcFnMi vor 7 Jahren 0
2
DaveParillo

Gnu-Plot kann das nicht alleine tun. Ich weiß nicht, was ich mit dem Text anfangen soll. Wenn Ihre Daten in einer Datei namens file.dat vorhanden sind, gilt Folgendes:

perl -ane 'print "set label \"($F[0])\" at $F[1],$F[2]\n"' file.dat > label.plt 

erzeugt eine Etikettendatei, die Sie in gnuplot verwenden können. Sie können dann eine (sehr einfache) Darstellung wie folgt erstellen:

gnuplot> load "label.plt" gnuplot> plot 'file.dat' u 2:3 

Sie können mit dem Etikettenversatz herumspielen, wenn Sie möchten. Zum Beispiel,

"set label \"($F[0])\" at $F[1]+0.05,$F[2]+0.05\n"' 

Bewegt die Etiketten etwas heraus, damit sie nicht direkt an Ihren Punkten anliegen.