2013-03-02 19 views
9

Sono nuovo di gnuplot e sto avendo problemi a trovare il significato di alcuni comandi. Voglio tracciare un file csv in cui le righe sono punti dati e le tre colonne rappresentano rispettivamente l'etichetta dati, valore x e valore y. Voglio la seconda colonna sull'asse x e la terza colonna sull'asse y e la prima colonna come etichetta allegata a quel punto. Ecco i datignuplot plot dati etichettati

ACB, 0.0000000, 0.0000000000 
ASW, 1.0919705, -0.0864042502 
CDX, 0.0000000, 0.0000000000 
CEU, -0.4369415, -0.5184317277 
CHB, -0.4686879, 0.7764323199 
CHD, 0.0000000, 0.0000000000 
CHS, -0.4141749, 0.7482543582 
CLM, -0.2559306, -0.2535837629 
FIN, -0.5004242, -0.2108050200 
GBR, -0.4140216, -0.5132990203 
GIH, 0.0000000, 0.0000000000 
IBS, -0.4928541, -0.5812216372 
JPT, -0.4821734, 0.7263450301 
KHV, 0.0000000, 0.0000000000 
LWK, 1.4515552, -0.0003996165 
MKK, 0.0000000, 0.0000000000 
MXL, -0.4019733, -0.0484315198 
PEL, 0.0000000, 0.0000000000 
PUR, -0.2165559, -0.3173440295 
TSI, -0.3956957, -0.4549254002 
YRI, 1.5555644, -0.0202297606 

ho provato cose come

plot 'infile' using 2:2 with labels, 'infile' using 1:2 

ma segnala "non abbastanza colonne per questo stile". Non so davvero cosa significano i numeri intorno ai due punti, anche se li vedo ovunque nel codice degli altri.

risposta

15

Si può fare questo con il seguente comando:

set datafile sep ',' 
plot 'test.dat' u 2:3:1 w labels point offset character 0,character 1 tc rgb "blue" 

Parte della tua confusione è probabilmente la notazione abbreviata di gnuplot per un sacco di cose. Ad esempio, nel comando precedente, u sta per using e w sta per with e tc sta per textcolor. In generale, gnuplot consente di abbreviare un comando alla sequenza univoca più breve di caratteri che può essere utilizzata per identificarlo. quindi with può essere w, wi, wit e gnuplot riconoscerà nessuno di essi poiché nessun altro identificatore di trama inizia con w.

I numeri dopo l'identificatore di utilizzo sono colonne nel file di dati. Quindi qui, la posizione x dell'etichetta è presa dalla seconda colonna. La posizione y è presa dalla 3a colonna. E il testo dell'etichetta è preso dalla prima colonna che è dove otteniamo il using 2:3:1. In realtà è molto più potente di quello (la sintassi ti permetterà di aggiungere 2 colonne insieme per ricavare una posizione x o y per esempio), ma la spiegazione di tutto questo dovrebbe probabilmente essere lasciata per un'altra domanda.

+0

Fantastico, grazie! Esattamente ciò di cui avevo bisogno – syzygy

+0

Si noti che, a quanto pare, "_ lo stile' labels' è disponibile solo se gnuplot è costruito con l'opzione di configurazione '--enable-datastrings'_"; vedere http://superuser.com/a/67452/39752 – sdaau

+0

Nota: se si utilizza un set di dati con stringhe e si utilizza ($ 1): ($ 2): ($ 3) con etichette' non riesce con "_warning: saltare i dati file senza punti validi_ "senza stampa - prova' using ($ 1): ($ 2): stringcolumn (3) 'invece (nota, l'argomento di' stringacolonna' è il numero di colonna, _ senza un sigillo del dollaro). – sdaau

4

Dal momento che si sta utilizzando un file CSV è necessario impostare il separatore:

set datafile separator ',' 

Inoltre, credo che questo è quello che stai cercando di fare:

plot 'infile' using 2:3, 'infile' 2:3:1 with labels offset 1