2014-08-29 17 views
5

Mam plik danych, który wygląda tak:3-wymiarowa fabuła w GnuPlot, gdzie kolor jest czwartą kolumną w moim pliku danych?

1 2 3 0.5 
2 8 9 0.2 
3 4 78 0.4 
6 5 7 0.01 
9 9 9 0.3 
10 12 18 0.9 
6 8 4 1 

chciałbym zrobić wykres jak ten http://2.bp.blogspot.com/-378_rAaSSVU/UzU0gnGcr9I/AAAAAAAABnU/P1GwP9RKBkM/s1600/gnuplot.png 4. Jeżeli kolumna jest kolor.

próbowałem - oczywiście błędna, ponieważ nie używam czwartej kolumnie, ale nie udało mi się znaleźć coś w dokumentacji:

set dgrid3d 30,30 
set view 60,45 
set hidden3d 
dataFile='prova.dat' 
set palette defined (0 "blue", 0.5 "white", 1 "pink") 
set pm3d 
splot dataFile u 1:2:3 with pm3d 

Czy latków, jak to możliwe?

Odpowiedz

6

Używając tylko pm3d możesz użyć czwartej kolumny, aby wybrać kolor niezależny od wartości z. Wraz z dgrid3d nie jest to bezpośrednio możliwe, ponieważ siatka nie jest wykonywana w kolumnie kolorów.

Można zastosować obejście: Najpierw należy wykadrować wartość z zrzutu siatki do jednego pliku, a następnie wartości kolorów z siatką do drugiego pliku, a jako ostatni punkt wyłączyć komunikaty tymczasowe, a następnie połączyć oba pliki tymczasowe w locie i wykreślić ich wartości:

set dgrid3d 30,30 
dataFile='prova.dat' 

set table dataFile.'.grid' 
splot dataFile u 1:2:3 
unset table 

set table dataFile.'.color' 
splot dataFile u 1:2:4 
unset table 

set view 60,45 
set hidden3d 
set palette defined (0 "blue", 0.5 "white", 1 "pink") 
set autoscale cbfix 
set pm3d 
unset dgrid3d 
set ticslevel 0 
splot sprintf('< paste %s.grid %s.color', dataFile, dataFile) u 1:2:3:7 with pm3d notitle 

enter image description here

uwaga, że ​​paste jest narzędziem wiersza polecenia dla uniksowych systemów operacyjnych. Aby uzyskać podobne rozwiązanie dla systemu Windows, możesz np. napisz mały skrypt Pythona paste.py (zobacz moją odpowiedź na Get ratio from 2 files in gnuplot dla możliwej implementacji). Następnie należy uruchomić plik binarny wgnuplot_pipes.exe i komenda splot staje

splot sprintf('< python paste.py %s.grid %s.color', dataFile, dataFile) u 1:2:3:7 with pm3d notitle 

Oczywiście, do tego trzeba mieć zainstalowany Python i binarny pyton muszą być dostępne za pośrednictwem zmiennej PATH środowiska.

+0

Dziękuję za szybką odpowiedź. Nie jestem wprawnym użytkownikiem, dlatego nie rozumiem - uruchomienie kodu w wersji 4.6 patchlevel 5- ostrzeżenia generowane przez kod: wiersz 19: ostrzeżenie: Pomijanie nieczytelnego pliku "wklej prova.dat.grid prova.dat. kolor " wiersz 19: ostrzeżenie: Brak danych użytecznych w tym wykresie do automatycznego skalowania zakresu osi splot sprintf (" wklej% s.grid% s.color ", plik danych, plik danych) u 1: 2: 3: 7 z pm3d notitle ^ "C: \ Users \ Baroni \ Desktop \ prova.plt", wiersz 19: Wszystkie punkty x wartość undefined Zainstalowałem pythona i PATH, utworzyłem skrypt jako twój połączony ale bez postępu – Naialeoque

+0

Musisz użyć ostatnie polecenie, które napisałem, z ' Christoph

+0

Użyłem przeszłości i kopii, więc przypuszczam, że problemem jest brak Gnuplot.py w moim env, próbuję rozwiązać ten problem. – Naialeoque

Powiązane problemy