2013-03-02 18 views
9

Jestem nowy w gnuplot i mam problem ze znalezieniem znaczenia niektórych poleceń. Chcę wykreślić plik csv, w którym wiersze są punktami danych, a trzy kolumny oznaczają odpowiednio etykietę danych, wartość xi y. Chcę, aby druga kolumna na osi X i trzecia kolumna na osi Y oraz pierwsza kolumna były etykietą dołączoną do tego punktu. Oto daneWykres fabuły gnuplot o etykietach

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 

Próbowałem rzeczy jak

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

ale donosi „Za mało kolumn w tym stylu”. Tak naprawdę nie wiem, co oznaczają liczby w okolicy dwukropków, chociaż widzę je wszędzie w cudzym kodzie.

Odpowiedz

15

Można to zrobić z następująca komenda:

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

Część twojego zamieszania jest prawdopodobnie stenogramem gnuplot dla wielu rzeczy. Na przykład w powyższym poleceniu u oznacza using i w oznacza with i tc oznacza textcolor. Ogólnie rzecz biorąc, gnuplot pozwala skrócić polecenie do najkrótszej unikalnej sekwencji znaków, które można wykorzystać do jej identyfikacji. więc with może być w, wi, wit, a gnuplot rozpoznaje dowolne z nich, ponieważ żadne inne specyfikatory spekulacji nie zaczynają się od w.

Liczby po użyciu specyfikatora są kolumnami w pliku danych. A więc tutaj pozycja x etykiety pochodzi z drugiej kolumny. Pozycja y pochodzi z trzeciej kolumny. Tekst etykiety jest pobierany z 1. kolumny, gdzie otrzymujemy using 2:3:1. Jest to o wiele potężniejsze (składnia pozwoli ci dodać 2 kolumny do wyprowadzenia na przykład pozycji x lub y), ale wyjaśnienie tego wszystkiego powinno być pozostawione dla innego pytania.

+0

Niesamowite, dziękuję! Dokładnie to, co było mi potrzebne – syzygy

+0

Zauważmy, że "styl" etykiety jest dostępny tylko wtedy, gdy gnuplot jest zbudowany z opcją konfiguracyjną '--enable-datastrings'_"; zobacz http://superuser.com/a/67452/39752 – sdaau

+0

Pamiętaj również - jeśli korzystasz z zestawu danych z ciągami znaków i 'using ($ 1): ($ 2): ($ 3) z etykietami' kończy się niepowodzeniem z" _warning: Pomijanie danych plik bez poprawnych points_ "bez kreślenia - spróbuj' using ($ 1): ($ 2): stringcolumn (3) 'zamiast (zauważ, argumentem' stringcolumn' jest numer kolumny, _nieznaczony symbol dolara). – sdaau

4

Ponieważ używasz pliku csv należy ustawić separator:

set datafile separator ',' 

Także myślę, że to, co próbujesz zrobić:

plot 'infile' using 2:3, 'infile' 2:3:1 with labels offset 1 
Powiązane problemy