Questo è in realtà un doosie e non riesco a farlo senza un po 'di magia shell * nix.
In primo luogo, vogliamo ottenere la x etichette di graduazione ed etichette di graduazione y:
XTICS="`awk 'BEGIN{getline}{printf "%s ",$1}' test.dat`"
YTICS="`head -1 test.dat`"
A questo punto, XTICS è la stringa "F G H I J" e YTICS è la stringa "A B C D E".
Ora, vogliamo impostare i xtics per iterazione:
set for [i=1:words(XTICS)] xtics (word(XTICS,i) i-1)
set for [i=1:words(YTICS)] ytics (word(YTICS,i) i-1)
Abbiamo utilizzato 2 gnuplot incorporato funzioni (word
e words
). words(string)
conta quante parole ci sono nella stringa data (una parola è una sequenza di caratteri separata da spazi). word(string,n)
restituisce la nona parola nella stringa.
Ora, siamo in grado di tracciare la vostra file di dati ... L'unico problema è che matrix
vuole utilizzare tutte le righe e le colonne nel file di dati. Potresti essere in grado di ridurre le righe/colonne effettivamente lette usando la parola chiave every
, ma non so come farlo sui file matrix - e penso che sia probabilmente più facile continuare a fare affidamento sulle utilità della shell (awk
e sed
)
plot "<awk '{$1=\"\"}1' test.dat | sed '1 d'" matrix w image
#######^ replace the first field with nothing
##################################^delete first line
e ora la tua trama (si spera) guarda il modo in cui si desidera.
Si noti inoltre che da quando abbiamo usato l'iterazione, questo script funziona solo in gnuplot 4.3 o superiore - Dal momento che la stabile attuale è la 4.6, si spera che è ok.
Lei, signore, sei il mio eroe del giorno. Grazie mille! – Eekhoorn
@zenbomb - Nessun problema. In realtà è stato un po 'un gioco divertente per me cercare di capirlo. Non lavoro spesso con i file di dati 'matrix', quindi è stata una buona occasione per imparare qualcosa di nuovo su gnuplot. – mgilson
XTICS senza awk: XTICS = "' cut -d '' -f1 test.dat | xargs '"; Abuso di xarg per trasformare le colonne in righe. – Manwe