Dieser ist eigentlich ein Doosie und ich kann es nicht ohne etwas * nix shell magic machen.
Zuerst wollen wir die x tic Etiketten und y tic Etiketten bekommen:
XTICS="`awk 'BEGIN{getline}{printf "%s ",$1}' test.dat`"
YTICS="`head -1 test.dat`"
An diesem Punkt ist XTICS die Zeichenfolge "F G H I J" und YTICS ist die Zeichenfolge "A B C D E".
Jetzt wollen wir die xtics iterativ einzustellen:
set for [i=1:words(XTICS)] xtics (word(XTICS,i) i-1)
set for [i=1:words(YTICS)] ytics (word(YTICS,i) i-1)
Wir haben 2 gnuplot eingebaute Funktionen verwendet (word
und words
). words(string)
zählt, wie viele Wörter es in der gegebenen Zeichenfolge gibt (ein Wort ist eine durch Leerzeichen getrennte Zeichenfolge). word(string,n)
gibt das n-te Wort in der Zeichenfolge zurück.
Jetzt können wir Ihre Daten-Datei plotten ... Das einzige Problem ist, dass matrix
willalle Zeilen und Spalten in der Daten-Datei verwenden. Sie können möglicherweise die tatsächlich gelesenen Zeilen/Spalten mit dem Schlüsselwort every
reduzieren, aber ich weiß nicht, wie das bei Matrixdateien funktioniert - und ich denke, es ist wahrscheinlich einfacher, sich weiterhin auf Shell-Dienstprogramme zu verlassen (awk
) und sed
)
plot "<awk '{$1=\"\"}1' test.dat | sed '1 d'" matrix w image
#######^ replace the first field with nothing
##################################^delete first line
und jetzt Ihr Grundstück (hoffentlich) sieht so, wie Sie es wollen.
Beachten Sie auch, dass dieses Skript, da wir Iteration verwendet haben, nur in gnuplot 4.3 oder höher funktioniert - Da der aktuelle stabile Wert 4,6 ist, ist das hoffentlich OK.
Sie, Herr, bist mein Held des Tages. Vielen Dank! – Eekhoorn
@zenbomb - Kein Problem. Es war wirklich ein lustiges Spiel für mich, um es herauszufinden. Ich arbeite nicht oft mit 'Matrix'-Dateien, daher war es eine gute Gelegenheit, etwas Neues über gnuplot zu lernen. – mgilson
XTICS ohne awk: XTICS = "' cut -d '' -f1 test.dat | xargs '"; Verwenden von Xargs zum Umwandeln von Spalten in Zeilen. – Manwe