niedziela, 17 października 2021

Zimno jak w Suwałkach albo sztuka rysowania klimatogramów

Przygotowanie

1. Pobieramy i instalujemy program Gnuplot (wersję pod Windowsa można znaleźć tutaj, program działa też na innych platformach (Linux, macOS, ba, nawet na Androidzie!). Po uruchomieniu Gnuplota wita nas ekran, który bardziej przypomina jakieś środowisko programistyczne – nic dziwnego, bo jest to tak naprawdę prosty język do projektowania wykresów.

Możemy go przetestować, wpisując plot x*x i naciskając 'Enter'. Powinno nam się pokazać okno z ładnym wykresem funkcji kwadratowej.


 2. Zarówno dane jak i skrypt możemy edytować w systemowym Notatniku, ale szczerze polecam Notepad++ albo Geany.

Pobieramy dane

Dane możemy pobrać ze strony Klimadiagramme (po niemiecku) albo Climate Data (po angielsku) – na tej drugiej znajdziemy więcej miejscowości, choć nie jestem pewien, czy są to dane z obserwacji czy z jakichś skomplikowanych modeli matematycznych.

Na potrzeby niniejszego posta, pobrałem sobie dane ze średnią temperaturą i opadami w Suwałkach. Skasowałem pierwszą linię (nagłówek) i ostatnią (dane roczne), dodałem na początku kolejny numer miesiąca, a niemieckie nazwy miesięcy zastąpiłem liczbami rzymskimi. Całość powinna więc wyglądać tak (liczby mogą być oddzielone spacją lub znakami tabulacji, nie ma to znaczenia):

Zapisujemy dane w pliku np. jako suwalki.txt (bezpieczniej nie używać polskich znaków).

Skrypt do generowania wykresu

Otwieramy nowe okno w Notatniku i przeklejamy tam poniższy skrypt.

 

Zapisujemy plik skryptu np. pod nazwą klimatogram.txt w tym samym folderze, co nasz plik z danymi. Teraz otwieramy skrypt z menu Gnuplota, wybierając opcję File -> Open.
Sam proces rysowania odbywa się po cichu i bez komunikatów – w Gnuplocie wyświetli się tylko w nowej linii napis load 'klimatogram.txt', ale w folderze pojawi gotowy plik graficzny z klimatogramem o nazwie ustalonej w skrypcie (suwalki.jpg)

 


Modyfikacje

Jeżeli chcemy przerobić skrypt tak, żeby rysował klimatogram dla innego miasta, to należy w nim zmodyfikować nie tylko tytuł w pierwszej linijce, nazwy pliku z danymi (2 razy w ostatniej linii) czy nazwy obrazka wyjściowego, ale przede wszystkim zakresy dla osi po lewej i prawej stronie diagramu.

Oś x (z miesiącami) pozostaje niezmienna, ale zakresy temperatury (set yrange) i opadów (set yrange2) warto dostosować do strefy klimatycznej – na pewno inaczej będą one wyglądać dla Mumbaju a inaczej dla Anchorage. Podawanie ujemnego zakresu dla opadów wydaje się bez sensu, ale mi osobiście podoba się, gdy ich oś 0 przebiega przez środek diagramu – parametry dla y2ticks wyraźnie podają, że podziałka osi ma się zacząć dopiero od 0, skończyć na 100 i iść co 25 jednostek.

Formaty wyjściowe

Gnuplot obsługuje kilkadziesiąt formatów wyjściowych – zarówno tych przeznaczonych przede wszystkim do druku (PDF), Internetu (SVG) jak i popularnych formatów graficznych (z tych mniej popularnych znajdziemy tu nawet coś dla miłośników AutoCADa (DXF) czy Amigi!). Pełną listę można przejrzeć, wpisując polecenie set term i naciskając 'Enter'.
Jeżeli chcemy podejrzeć od razu efekt pracy programu, a dopiero potem zapisać go na dysku, to można zamienić w linii 14 set term jpeg na set term qt (uwaga – za pierwszym razem otworzenie okna z podglądem zajmuje trochę więcej czasu!).

Aha, Gnuplot przechowuje historię swoich działań – jeżeli chcemy jeszcze raz otworzyć ten sam skrypt, to wystarczy w głównym oknie nacisnąć strzałkę kursora do góry.

Disclaimer

Powyższy skrypt w Gnuplocie nie jest mojego autorstwa, natknąłem się na niego dawno temu w Wikipedii, wśród materiałów podesłanych przez fińską programistkę o nicku windytan. W międzyczasie w samej Wikipedii pojawił się inny, wbudowany sposób prezentowania danych klimatycznych, który nie wymaga już zewnętrznych narzędzi.

Udanych eksperymentów z Gnuplotem!


Brak komentarzy: