{ "cells": [ { "cell_type": "markdown", "id": "a2f90056-b696-4865-8a52-d087c3e32bf9", "metadata": {}, "source": [ "# ESO Logo   TAP queries to the asm.meteo_paranal table\n", "\n", "Little illustration on how to query for relative humidity, pressure, temperature, wind speed and direction of a given night at Paranal." ] }, { "cell_type": "code", "execution_count": 1, "id": "6e4469a7-6ba7-48c8-88c9-c7c865c46145", "metadata": {}, "outputs": [], "source": [ "# Initialisations\n", "import os \n", "import sys\n", "\n", "import pyvo\n", "import requests\n", "#import cgi\n", "import numpy as np\n", "\n", "from astropy.visualization import astropy_mpl_style\n", "import matplotlib.pyplot as plt\n", "\n", "#import pandas\n", "\n", "from astropy import table\n", "from astropy.coordinates import SkyCoord\n", "from astropy.units import Quantity\n", "\n", "from pyvo.dal import tap\n", "\n", "# The ESO TAP service offering ASM data tables:\n", "ESO_TAP_OBS = \"https://archive.eso.org/tap_obs\"\n", "\n", "# Instantiate the tap service:\n", "tapobs = tap.TAPService(ESO_TAP_OBS)" ] }, { "cell_type": "code", "execution_count": 2, "id": "3259850a-dcea-46d7-8d79-bb46a896af4d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING: AstropyDeprecationWarning: show_in_notebook() is deprecated as of 6.1 and to create\n", " interactive tables it is recommended to use dedicated tools like:\n", " - https://github.com/bloomberg/ipydatagrid\n", " - https://docs.bokeh.org/en/latest/docs/user_guide/interaction/widgets.html#datatable\n", " - https://dash.plotly.com/datatable [warnings]\n" ] }, { "data": { "text/html": [ "Table length=113\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
column_nameunitdescription
integrationsTimebin [s] used for measurement of ambient data sample.
midpoint_dateMidpoint (time) of the measurement.
presqnhhPaAir Pressure Normalised: 1 minute average pressure normalised to sea level [hPa]. (sci. param.)
presqnh_devhPaAir Pressure Normalised RMS: 1 minute RMS pressure normalized to sea level [hPa]. (eng. param.)
presqnh_insthPaAir Pressure Normalised instantanous: Pressure normalized to sea level at the end of the averaging period [hPa]. (eng. param.)
presqnh_maxhPaAir Pressure Normalised max: 1 minute maximum pressure normalized to sea level [hPa]. (eng. param.)
presqnh_minhPaAir Pressure Normalised min: 1 minute minimum pressure normalized to sea level [hPa]. (eng. param.)
press_0mhPaAir Pressure: Temporal (1 minute) mean of observatory site ambient baromeric air pressure measured at 0m above the VLT platform during measurement period [hPa]. (sci. param.)
press_0m_devhPaAir Pressure RMS: 1 minute RMS surface pressure variation at 0m above the VLT platform [hPa]. (eng. param.)
press_0m_insthPaAir Pressure instantanous: pressure at 0m above the VLT platform at the end of the averaging period [hPa]. (eng. param.)
press_0m_maxhPaAir Pressure max: 1 minute maximum surface pressure at 0m above the VLT platform [hPa]. (eng. param.)
press_0m_minhPaAir Pressure min: 1 minute minimum surface pressure at 0m above the VLT platform [hPa]. (eng. param.)
prestrend_0mhPaAir Pressure 3h trend: Surface pressure trend over 3 hours at 0m above the VLT platform [hPa]. (eng. param.)
rain_m20m%Rain intensity: 1 minute average rain percentage measured 20m below the VLT platform [%]. (sci. param.)
rain_m20m_dev%Rain Intensity RMS: 1 minute RMS rain percentage 20m below the VLT platform [%]. (eng. param.)
rain_m20m_inst%Rain Intensity instantanous : Rain percentage 20m below the VLT platform at the end of the averaging period [%]. (eng. param.)
rain_m20m_max%Rain Intensity max: 1 minute maximum rain percentage 20m below the VLT platform [%]. (eng. param.)
rain_m20m_min%Rain Intensity min: 1 minute minimum rain percentage 20m below the VLT platform [%]. (eng. param.)
rhum_2m%Relative Humidity: Temporal (1 minute) mean of observatory site ambient relative humidity measured at sensor position 2m above the VLT platform during measurement period [%]. (sci. param.)
rhum_2m_dev%Humidity RMS: 1 minute RMS relative humidity measured at 2m above the VLT platform [%]. (eng. param.)
rhum_2m_inst%Humidity instantanous: 1 minute relative humidity measured at 2m above the VLT platform at the end of the averaging period [%]. (eng. param.)
rhum_2m_max%Humidity max: 1 minute maximum relative humidity measured at 2m above the VLT platform [%]. (eng. param.)
rhum_2m_min%Humidity min: 1 minute minimum relative humidity measured at 2m above the VLT platform [%]. (eng. param.)
rhum_30m%Relative Humidity: Temporal (1 minute) mean of observatory site ambient relative humidity measured at sensor position 30m above the VLT platform during measurement period [%]. (sci. param.)
rhum_30m_dev%Humidity RMS: 1 minute RMS relative humidity measured at 30m above the VLT platform [%]. (eng. param.)
rhum_30m_inst%Humidity instantanous: 1 minute relative humidity measured at 30m above the VLT platform at the end of the averaging period [%]. (eng. param.)
rhum_30m_max%Humidity max: 1 minute maximum relative humidity measured at 30m above the VLT platform [%]. (eng. param.)
rhum_30m_min%Humidity min: 1 minute minimum relative humidity measured at 30m above the VLT platform [%]. (eng. param.)
rhum_m20m%Relative Humidity: Temporal (1 minute) mean of observatory site ambient relative humidity measured at sensor position 20m below the VLT platform during measurement period [%]. (sci. param.)
rhum_m20m_dev%Humidity RMS: 1 minute RMS relative humidity measured at 20m below the VLT platform [%]. (eng. param.)
rhum_m20m_inst%Humidity instantanous: 1 minute relative humidity measured at 20m below the VLT platform at the end of the averaging period [%]. (eng. param.)
rhum_m20m_max%Humidity max: 1 minute maximum relative humidity measured at 20m below the VLT platform [%]. (eng. param.)
rhum_m20m_min%Humidity min: 1 minute minimum relative humidity measured at 20m below the VLT platform [%]. (eng. param.)
start_dateThe start time of the measurement.
temp_0mCelsiusAmbient Temperature: Temporal (1 minute) mean of site ambient temperature measured at 0m above the VLT platform [degC]. (sci. param.)
temp_0m_devCelsiusAir Temperature RMS: 1 minute RMS air temperature variation at 0m above the VLT platform below VLT platform [degC]. (eng. param.)
temp_0m_instCelsiusAir Temperature Instantanous : 1 minute air temperature at 0m above the VLT platform measured at the end of the averaging period [degC]. (eng. param.)
temp_0m_maxCelsiusAir Temperature max: 1 minute maximum air temperature at 0m above the VLT platform [degC]. (eng. param.)
temp_0m_minCelsiusAir Temperature min: 1 minute minimum air temperature at 0m above the VLT platform [degC]. (eng. param.)
temp_2mCelsiusAmbient Temperature: Temporal (1 minute) mean of site ambient temperature measured at 2m above the VLT platform [degC]. (sci. param.)
temp_2m_devCelsiusAir Temperature RMS: 1 minute RMS air temperature variation at 2m above the VLT platform below VLT platform [degC]. (eng. param.)
temp_2m_instCelsiusAir Temperature Instantanous : 1 minute air temperature at 2m above the VLT platform measured at the end of the averaging period [degC]. (eng. param.)
temp_2m_maxCelsiusAir Temperature max: 1 minute maximum air temperature at 2m above the VLT platform [degC]. (eng. param.)
temp_2m_minCelsiusAir Temperature min: 1 minute minimum air temperature at 2m above the VLT platform [degC]. (eng. param.)
temp_30mCelsiusAmbient Temperature: Temporal (1 minute) mean of site ambient temperature measured at 30m above the VLT platform [degC]. (sci. param.)
temp_30m_devCelsiusAir Temperature RMS: 1 minute RMS air temperature variation at 30m above the VLT platform below VLT platform [degC]. (eng. param.)
temp_30m_instCelsiusAir Temperature Instantanous : 1 minute air temperature at 30m above the VLT platform measured at the end of the averaging period [degC]. (eng. param.)
temp_30m_maxCelsiusAir Temperature max: 1 minute maximum air temperature at 30m above the VLT platform [degC]. (eng. param.)
temp_30m_minCelsiusAir Temperature min: 1 minute minimum air temperature at 30m above the VLT platform [degC]. (eng. param.)
temp_m20mCelsiusAmbient Temperature: Temporal (1 minute) mean of site ambient temperature measured at 20m below the VLT platform [degC]. (sci. param.)
temp_m20m_devCelsiusAir Temperature RMS: 1 minute RMS air temperature variation 20m below the VLT platform [degC]. (eng. param.)
temp_m20m_instCelsiusAir Temperature Instantanous : 1 minute air temperature 20m below the VLT platform measured at the end of the averaging period [degC]. (eng. param.)
temp_m20m_maxCelsiusAir Temperature max: 1 minute maximum air temperature 20m below the VLT platform [degC]. (eng. param.)
temp_m20m_minCelsiusAir Temperature min: 1 minute minimum air temperature 20m below the VLT platform [degC]. (eng. param.)
tempdew_2mCelsiusDew Temperature: Temporal (1 minute) mean of observatory site ambient dew temperature measured at sensor position 2m above the VLT platform during measurement period [degC]. (sci. param.)
tempdew_2m_devCelsiusDew Temperature RMS: 1 minute RMS dew temperature at 2m above the VLT platform [degC]. (eng. param.)
tempdew_2m_instCelsiusDew Temperature instantanous: 1 minute dew temperature at 2m above the VLT platform measured at the end of the averaging period [degC]. (eng. param.)
tempdew_2m_maxCelsiusDew Temperature max: 1 minute maximum dew temperature at 2m above the VLT platform [degC]. (eng. param.)
tempdew_2m_minCelsiusDew Temperature min: 1 minute minimum dew temperature at 2m above the VLT platform [degC]. (eng. param.)
tempdew_30mCelsiusDew Temperature: Temporal (1 minute) mean of observatory site ambient dew temperature measured at sensor position 30m above the VLT platform during measurement period [degC]. (sci. param.)
tempdew_30m_devCelsiusDew Temperature RMS: 1 minute RMS dew temperature at 30m above the VLT platform [degC]. (eng. param.)
tempdew_30m_instCelsiusDew Temperature instantanous: 1 minute dew temperature at 30m above the VLT platform measured at the end of the averaging period [degC]. (eng. param.)
tempdew_30m_maxCelsiusDew Temperature max: 1 minute maximum dew temperature at 30m above the VLT platform [degC]. (eng. param.)
tempdew_30m_minCelsiusDew Temperature min: 1 minute minimum dew temperature at 30m above the VLT platform [degC]. (eng. param.)
tempdew_m20mCelsiusDew Temperature: Temporal (1 minute) mean of observatory site ambient dew temperature measured at sensor position 20m below the VLT platform during measurement period [degC]. (sci. param.)
tempdew_m20m_devCelsiusDew Temperature RMS: 1 minute RMS dew temperature at 20m below the VLT platform [degC]. (eng. param.)
tempdew_m20m_instCelsiusDew Temperature instantanous: 1 minute dew temperature at 20m below the VLT platform measured at the end of the averaging period [degC]. (eng. param.)
tempdew_m20m_maxCelsiusDew Temperature max: 1 minute maximum dew temperature at 20m below the VLT platform [degC]. (eng. param.)
tempdew_m20m_minCelsiusDew Temperature min: 1 minute minimum dew temperature at 20m below the VLT platform [degC]. (eng. param.)
validTrue if a valid measurement, False otherwise.
wind_dir_10mdegWind Direction (0/360): 1 minute average wind direction at 10m above the VLT platform counted clockwise from North (standard) [deg]. (sci. param.)
wind_dir_10m_180degWind Direction (180/-180): 1 minute average wind direction at 10m and 10m above the VLT platform counted clockwise from North (with 180 degree negative offset for display purposes) [deg]. (sci. param.)
wind_dir_10m_180_instdegWind Direction instantanous : Wind direction at 10m above the VLT platform at the end of the averaging period [deg]. (eng. param.)
wind_dir_10m_180_maxdegWind Direction max: 1 minute maximum wind direction at 10m above the VLT platform [deg]. (eng. param.)
wind_dir_10m_180_mindegWind Direction min: 1 minute minimum wind direction at 10m above the VLT platform [deg]. (eng. param.)
wind_dir_10m_devdegWind Direction RMS: 1 minute RMS air wind direction at 10m above the VLT platform [deg]. (eng. param.)
wind_dir_10m_instdegWind Direction instantanous : Wind direction at 10m above the VLT platform at the end of the averaging period [deg]. (eng. param.)
wind_dir_10m_maxdegWind Direction max: 1 minute maximum wind direction at 10m above the VLT platform [deg]. (eng. param.)
wind_dir_10m_mindegWind Direction min: 1 minute minimum wind direction at 10m above the VLT platform [deg]. (eng. param.)
wind_dir_30mdegWind Direction (0/360): 1 minute average wind direction at 30m above the VLT platform counted clockwise from North (standard) [deg]. (sci. param.)
wind_dir_30m_180degWind Direction (180/-180): 1 minute average wind direction at 30m above the VLT platform counted clockwise from North (with 180 degree negative offset for display purposes) [deg]. (sci. param.)
wind_dir_30m_180_instdegWind Direction instantanous : Wind direction at 30m above the VLT platform at the end of the averaging period [deg]. (eng. param.)
wind_dir_30m_180_maxdegWind Direction max: 1 minute maximum wind direction at 30m above the VLT platform [deg]. (eng. param.)
wind_dir_30m_180_mindegWind Direction min: 1 minute minimum wind direction at 30m above the VLT platform [deg]. (eng. param.)
wind_dir_30m_devdegWind Direction RMS: 1 minute RMS air wind direction at 30m above the VLT platform [deg]. (eng. param.)
wind_dir_30m_instdegWind Direction instantanous : Wind direction at 30m above the VLT platform at the end of the averaging period [deg]. (eng. param.)
wind_dir_30m_maxdegWind Direction max: 1 minute maximum wind direction at 30m above the VLT platform [deg]. (eng. param.)
wind_dir_30m_mindegWind Direction min: 1 minute minimum wind direction at 30m above the VLT platform [deg]. (eng. param.)
wind_speed_10mm.s**(-1)Wind Speed: 1 minute average wind speed at sensor position 10m [m.s**(-1)]. (sci. param.)
wind_speed_10m_devm.s**(-1)Wind Speed RMS: 1 minute RMS wind speed at 10m above ground [m.s**(-1)]. (eng. param.)
wind_speed_10m_instm.s**(-1)Wind Speed instantanous : Wind speed at 10m above ground, at the end of the averaging period [m.s**(-1)]. (eng. param.)
wind_speed_10m_maxm.s**(-1)Wind Speed max: 1 minute maximum wind speed at 10m above ground [m.s**(-1)]. (eng. param.)
wind_speed_10m_minm.s**(-1)Wind Speed min: 1 minute minimum wind speed at 10m above ground [m.s**(-1)]. (eng. param.)
wind_speed_30mm.s**(-1)Wind Speed: 1 minute average wind speed at sensor position 30m above the VLT platform [m.s**(-1)]. (sci. param.)
wind_speed_30m_devm.s**(-1)Wind Speed RMS: 1 minute RMS wind speed at 30m above the VLT platform [m.s**(-1)]. (eng. param.)
wind_speed_30m_instm.s**(-1)Wind Speed instantanous : Wind speed at 30m above the VLT platform, at the end of the averaging period [m.s**(-1)]. (eng. param.)
wind_speed_30m_maxm.s**(-1)Wind Speed max: 1 minute maximum wind speed at 30m above the VLT platform [m.s**(-1)]. (eng. param.)
wind_speed_30m_minm.s**(-1)Wind Speed min: 1 minute minimum wind speed at 30m above the VLT platform [m.s**(-1)]. (eng. param.)
wind_speedu_20mm.s**(-1)Wind Speed component U: Temporal mean of observatory site ambient wind speed U vector component, where U is horizontal and points to 330 degree measured at sensor position 20m above ground during measurement period [m.s**(-1)]. (sci. param.)
wind_speedu_20m_devm.s**(-1)Wind Speed component U RMS: 1 minute RMS horizontal wind speed U component (into 330 degree) at 20m above ground [m.s**(-1)]. (eng. param.)
wind_speedu_20m_instm.s**(-1)Wind Speed component U instantaneous: Horizontal wind speed U component (into 330 degree) at 20m above ground at the end of the averaging period [m.s**(-1)]. (eng. param.)
wind_speedu_20m_maxm.s**(-1)Wind Speed component U max: 1 minute maximum horizontal wind speed U component (into 330 degree) at 20m above ground [m.s**(-1)]. (eng. param.)
wind_speedu_20m_minm.s**(-1)Wind Speed component U min: 1 minute minimum horizontal wind speed U component (into 330 degree) at 20m above ground [m.s**(-1)]. (eng. param.)
wind_speedv_20mm.s**(-1)Wind Speed component V: Temporal mean of observatory site ambient wind speed V vector component, where V is horizontal and points to 240 degree measured at sensor position 20m above ground during measurement period [m.s**(-1)]. (sci. param.)
wind_speedv_20m_devm.s**(-1)Wind Speed component V RMS: 1 minute RMS horizontal wind speed V component (into 240 degree) at 20m above ground [m.s**(-1)]. (eng. param.)
wind_speedv_20m_instm.s**(-1)Wind Speed component V instantaneous: Horizontal wind speed V component (into 240 degree) at 20m above ground at the end of the averaging period [m.s**(-1)]. (eng. param.)
wind_speedv_20m_maxm.s**(-1)Wind Speed component V max: 1 minute maximum horizontal wind speed V component (into 240 degree) at 20m above ground [m.s**(-1)]. (eng. param.)
wind_speedv_20m_minm.s**(-1)Wind Speed component V min: 1 minute minimum horizontal wind speed V component (into 240 degree) at 20m above ground [m.s**(-1)]. (eng. param.)
wind_speedw_20mm.s**(-1)Wind Speed component W: Temporal mean of observatory site ambient wind speed W vector component, where W is vertically pointing upwards, measured at sensor position 20m above ground during measurement period [m.s**(-1)]. (sci. param.)
wind_speedw_20m_devm.s**(-1)Wind Speed component W RMS: 1 minute RMS vertical wind speed W component at 20m above ground [m.s**(-1)]. (eng. param.)
wind_speedw_20m_instm.s**(-1)Wind Speed component W instantaneous: Vertical wind speed W component at 20m above ground at the end of the averaging period [m.s**(-1)]. (eng. param.)
wind_speedw_20m_maxm.s**(-1)Wind Speed component W max: 1 minute maximum vertical wind speed W component at 20m above ground [m.s**(-1)]. (eng. param.)
wind_speedw_20m_minm.s**(-1)Wind Speed component W min: 1 minute minimum vertical wind speed W component at 20m above ground [m.s**(-1)]. (eng. param.)
\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Note: The names of the fields of the ASM do not coincide with the column names in the TAP table.\n", "# Let's check the column names, units, and descriptions of the \"asm.meteo_paranal\" table:\n", "\n", "query = \"SELECT column_name, unit, description FROM TAP_SCHEMA.columns where table_name='asm.meteo_paranal' order by 1\"\n", "res = tapobs.search(query=query)\n", "res.to_table().show_in_notebook(show_row_index=False)" ] }, { "cell_type": "code", "execution_count": 3, "id": "91e1497a-de47-4bda-b568-2504dedd8846", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " start_date temp_30m rhum_30m ... wind_dir_30m wind_speed_30m\n", " Celsius % ... deg m.s**(-1) \n", "-------------------- -------- -------- ... ------------ --------------\n", "2025-05-01T21:00:41Z 14.78 15 ... 346 8.43\n", "2025-05-01T21:01:41Z 14.76 16 ... 341 7.88\n", "2025-05-01T21:02:41Z 14.72 15 ... 358 8.57\n", "2025-05-01T21:03:43Z 14.76 16 ... 344 7.63\n", "2025-05-01T21:04:43Z 14.74 17 ... 341 8.07\n", "2025-05-01T21:05:43Z 14.76 15 ... 346 9.05\n", "2025-05-01T21:06:43Z 14.71 16 ... 345 8.9\n", "2025-05-01T21:07:42Z 14.66 15 ... 348 9.48\n", "2025-05-01T21:08:43Z 14.67 18 ... 344 9.25\n", " ... ... ... ... ... ...\n", "2025-05-02T09:50:41Z 14.85 13 ... 2 4.9\n", "2025-05-02T09:51:41Z 14.89 13 ... 346 6.05\n", "2025-05-02T09:52:41Z 14.99 13 ... 340 5.47\n", "2025-05-02T09:53:41Z 14.95 13 ... 352 5.28\n", "2025-05-02T09:54:41Z 14.94 13 ... 351 5.8\n", "2025-05-02T09:55:40Z 15.0 13 ... 349 5.95\n", "2025-05-02T09:56:40Z 15.02 13 ... 358 5.38\n", "2025-05-02T09:57:40Z 15.01 13 ... 356 5.65\n", "2025-05-02T09:58:40Z 15.03 13 ... 1 5.9\n", "2025-05-02T09:59:40Z 14.94 13 ... 360 5.33\n", "Length = 780 rows\n" ] } ], "source": [ "# The following code queries for the average temperature, relative humidity, wind direction and speed at 30m over the Paranal platform\n", "# the instantaneous pressure 0m over the platform, and the average relativhe humidity at 2m,\n", "# in a given interval of time (start_date).\n", "\n", "query = \"\"\"select start_date, temp_30m, rhum_30m, rhum_2m, rain_m20m, \n", " press_0m_inst, wind_dir_30m, wind_speed_30m\n", " from asm.meteo_paranal\n", " where start_date between '2025-05-01T21:00:00' and '2025-05-02T10:00:00'\n", " \"\"\"\n", "\n", "res = tapobs.search(query=query)\n", "\n", "print(res.to_table()) # to_table() turns the \"res\" pyvo table in a astropy table, nicer to print out.\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "9c0917fb-2d38-404e-9ac6-a9fc35897062", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'm/s')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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q1q0aKFdu3bJMAy9++67lv9mHTt21OHDh+8qXntEUceO9e3bV/fdd5/+9a9/6aOPPpIkjRgxQlFRUYqIiNAXX3yhBQsW6MCBAwoLC9Mff/xxR6+Tmpqq5557TgMHDtSaNWvUrVs3TZgw4aZruIt6zSFDhugvf/mLVq9erZCQEL344ot66623NGHCBI0fP16fffaZqlWrpt69e+v333+/49eSrn/BycrK0t69exUVFaWGDRuqb9++lvP79+9XrVq1ZDabrZ7XpEkTy3lbxg+UR+SgO7NlyxZJKvClU5L+8pe/yNPTUytXrtQbb7yhuLg4DRs2TN27d1fTpk31v//7vxo0aJBmz57Nnl+oUBo3biw/Pz+r6fmbNm2Sq6urDh48aPkM5ubmKjExUREREbe95ocffqiEhATNnTtXn376qS5duqTHH39c6enplj5Lly7VkCFD9MADD+izzz7TG2+8obffftvyOb2dYcOG6b333tMLL7yg1atXq1+/furbt6/Onz9fpOfn5OSoV69e6tixo1avXq0pU6bc9jnXrl1Tbm6u/vOf/2jBggX6+uuv9dprr1nO//vf/1ZWVpblO8yfNWnSRIcPHy6wr9fEiROVlpampUuXavbs2dq2bZueffZZ9evXT56enlqxYoXGjx+vZcuWsSQd5YI95oxjx46pe/fucnZ21j//+U9t2LBBM2bMkLu7u3Jycqz6zp8/Xxs2bNDcuXO1fPlyValSRd26ddPOnTstfQ4ePKiWLVtq//79mj17ttatW6fu3bvrpZdessolly9fVvv27RUbG6uXXnpJ69ev12uvvaalS5eqV69eMgxD0vU/zPXu3VvLli3T2LFjFR8fr9atW6tbt263HdufGYah3NxcZWRkaMOGDZo9e7aeffZZ1a1b19Jn//79N81R0vWi3Z+tW7dO//jHPzRjxgytWLFCFy9eVPfu3TV27Fh99913mj9/vhYtWqSDBw+qX79+ljFVGgbszptvvmlIMiZPnmzVvnPnTkOSMXv2bKv2kydPGq6ursb48eMtbYMGDTLq1at329dq3769Icn4/vvvrdoffPBBo2vXrpbjJUuWGJKMo0ePWvXbunWrIcnYunVrgWvu2bPH0nb27FnDwcHBcHV1NU6fPm1pT05ONiQZf/vb324b682kpKQYkiyPVq1aWb2GYRhG586djUaNGhX6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wKr/ggULdM8992jevHlKTU1V/fr19cEHHygyMrJE4wcqMnLQfx08eNCyCeLAgQMLnH/zzTcVExNTorEB9q5jx46qUqWKXF1d1aZNG0t7RESElixZog4dOqhKlZKbaD506FBJ0syZM9W3b1/Vr19fEydOVGJiYpE2d1+8eLF8fX21dOlS/e1vf1OzZs302WefWS2jKClt2rTRkiVLFBsbqwsXLqhatWpq2rSpli1bViDH3H///dq2bZtee+01Pfnkk3J0dFTHjh313nvvWRV/AHtnTzmjWbNm2rhxo958802lpqaqWrVqCg4O1po1a9SlSxervmPGjNGVK1f00ksvKS0tTY0bN9aXX36ptm3bWvo8+OCD+vHHH/X222/rjTfeUFpammrUqKGgoCDLfluS5O7urm+//VYzZszQokWLdPToUbm6uqpu3bqKiIiwzNSpUqWK1qxZo+joaM2aNUs5OTlq27atvvrqK91///23fW9CQkK0bt06TZgwQWfOnJGjo6OCgoI0ceJERUdHW20g7+Lios2bN2v8+PGKjIzU5cuX1axZM61fv17t27e/7WvBmskwKttN3AEAAAAAKF+OHTumwMBAvfvuu1arCoBbYU8dAAAAAAAAO0RRBwAAAAAAwA6x/AoAAAAAAMAOFWumzvTp09WyZUt5eHiodu3a6t27tw4dOmTVxzAMxcTEyN/fX66urgoPD9eBAwes+mRnZysyMlI+Pj5yd3dXr169dOrUqbsfDQAAAAAAQCVRrKJOYmKiRo8erV27dikhIUG5ubnq0qWLLl26ZOkza9YszZkzR/Pnz9fu3btlNpvVuXNnXbx40dInKipK8fHxWrlypbZv367MzEz16NHjju96AgAAAAAAUNnc1fKr//znP6pdu7YSExP16KOPyjAM+fv7KyoqSq+99pqk67NyfH19NXPmTI0YMULp6emqVauWli1bpqefflqS9PvvvysgIEBfffWVunbtWjIjAwAAAAAAqMAcb9/l5tLT0yVJXl5ekqSjR48qNTVVXbp0sfRxcXFR+/bttWPHDo0YMUJJSUm6evWqVR9/f38FBwdrx44dhRZ1srOzlZ2dbTm+du2azp07J29vb5lMprsZAoBSZhiGLl68KH9/f1WpYl97s1+7dk2///67PDw8yDVAOUeuAVAWyDUAykJxcs0dF3UMw1B0dLQeeeQR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c3377be2DqnYSiLnZGdnKzIyUj4+PnJ3d1evXr106tSpMhxF0UyfPl0tW7aUh4eHateurd69e+vQoUNWfSrSeBcuXKgmTZqoevXqql69utq0aaP169dbzleksaL8OX36tAYOHChvb2+5ubmpWbNmSkpKsnVY5V5ubq7eeOMNBQYGytXVVQ0aNNBbb72la9eu2Tq0cqe8fmeusEUdSWrcuLFSUlIsj3379tk6pHLj0qVLatq0qebPn1/o+VmzZmnOnDmaP3++du/eLbPZrM6dO+vixYtlHGn5cbv3TJIee+wxq5+5r776qgwjBO4M+aBskENwt1atWqWoqChNmjRJe/fuVbt27dStWzedOHHC1qEVS0nknKioKMXHx2vlypXavn27MjMz1aNHD+Xl5ZXVMIokMTFRo0eP1q5du5SQkKDc3Fx16dJFly5dsvSpSOOtU6eOZsyYoT179mjPnj3q2LGjnnjiCcsvNRVprChfzp8/r7Zt28rJyUnr16/XwYMHNXv2bNWoUcPWoZV7M2fO1EcffaT58+fr559/1qxZs/Tuu+9q3rx5tg6t3Cm335mNCurNN980mjZtausw7IIkIz4+3nJ87do1w2w2GzNmzLC0XblyxfD09DQ++ugjG0RY/tz4nhmGYQwaNMh44oknbBIPUFLIB2WDHII78fDDDxsjR460arv//vuN119/3UYR3b07yTkXLlwwnJycjJUrV1r6nD592qhSpYqxYcOGMov9TqSlpRmSjMTERMMwKv54DcMwatasafzjH/+oFGOF7bz22mvGI488Yusw7FL37t2NF1980aqtb9++xsCBA20UkX0oT9+ZK/RMnd9++03+/v4KDAzUM888oyNHjtg6JLtw9OhRpaamqkuXLpY2FxcXtW/fXjt27LBhZOXftm3bVLt2bTVs2FDDhg1TWlqarUMC7gr5oGyRQ3AzOTk5SkpKsvosSlKXLl0q1GexKDknKSlJV69eterj7++v4ODgcv9epKenS5K8vLwkVezx5uXlaeXKlbp06ZLatGlToccK21uzZo1atGihp556SrVr11ZoaKg+/vhjW4dlFx555BFt3rxZv/76qyTp//7v/7R9+3Y9/vjjNo7MvtjyO3OFLeq0atVKn3zyib7++mt9/PHHSk1NVVhYmM6ePWvr0Mq91NRUSZKvr69Vu6+vr+UcCurWrZs+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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Histograms of rel.humidity at 30m and 2m, and of the wind direction and speed\n", "fig, axs = plt.subplots(1, 4) #, tight_layout=True)\n", "fig.set_size_inches(14, 2)\n", "# N is the count in each bin, bins is the lower-limit of the bin\n", "N, bins, patches = axs[0].hist(res['rhum_30m'], bins=10)\n", "_, bins2, patches2 = axs[1].hist(res['rhum_2m'], bins=10)\n", "_, _, _ = axs[2].hist(res['wind_dir_30m'], bins=10)\n", "_, _, _ = axs[3].hist(res['wind_speed_30m'], bins=10) \n", "\n", "axs[0].set_title('rel.hum. 30m')\n", "axs[1].set_title('rel.hum. 2m')\n", "axs[2].set_title('wind dir 30m')\n", "axs[3].set_title('wind speed 30m')\n", "axs[0].set_xlabel('%')\n", "axs[1].set_xlabel('%')\n", "axs[2].set_xlabel('deg')\n", "axs[3].set_xlabel(r'm/s') " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.4" } }, "nbformat": 4, "nbformat_minor": 5 }