{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 📈 Time-height graph" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "from herbie import FastHerbie, Herbie\n", "import matplotlib.pyplot as plt\n", "import matplotlib.dates as mdates\n", "import pandas as pd\n", "import xarray as xr" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 581 ms, sys: 67.7 ms, total: 649 ms\n", "Wall time: 860 ms\n" ] } ], "source": [ "%%time\n", "# User FastHerbie to get many Herbie objects\n", "FH = FastHerbie(DATES=[\"2024-05-11\"], product=\"prs\", fxx=range(0, 19, 3))\n", "# FH.inventory(r\"(?:HGT|TMP):1*[5-9,0][0,5]0 mb\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
latitudelongitude
040.76-111.89
\n", "
" ], "text/plain": [ " latitude longitude\n", "0 40.76 -111.89" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# points of interest to pick out of the grid\n", "points = pd.DataFrame({\"latitude\": [40.76], \"longitude\": [-111.89]})\n", "points" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 14.4 s, sys: 1.66 s, total: 16.1 s\n", "Wall time: 2min 5s\n" ] } ], "source": [ "%%time\n", "# Get data grid for variables of interest\n", "# Get data at specific points\n", "# Combine into a new dataset\n", "a = [\n", " i.xarray(r\"(?:HGT|TMP):1*[5-9,0][0,5]0 mb\").herbie.pick_points(points)\n", " for i in FH.file_exists\n", "]\n", "ds = xr.combine_nested(a, concat_dim=\"valid_time\")" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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GjVKnTt31ooVKzRz5kzt2rVLbdu21e+//16u65ZmzZo18vHx0T/+8Q+b/WX57kjSyJEj9cUXX2jOnDlKT09XamqqRo8erYyMDD388MMOi3Pnzp2qUaOGoqOjbfYXfm937txp9zXWrVunjh07KiMjQ3PmzNHixYsVEhKi3r17a+nSpUXaDxkyRL6+vlq0aJGmTp2qr776qsh09EGDBmn69OkaNGiQPvroI91888266aabdPz48VJjqcrfOXggN44SeaS/Tz8731ae6WdffPGFzXWKm362ceNGU61aNSPJhISEmD/++MPavizTz1q3bu2SHAFAedx8882mbdu2pqCgwBhjip1C9O233xpJZvHixUXOT0pKMpLMkSNHynzNvLw8U7t2bXPZZZcVOXbkyBEzdOhQ895775lvvvnGvPvuu6Z169ZGkpk9e/Z5+67IFKK8vDyTm5trBg8ebJo1a2ZzrKTpZ2vXrrX+HVGopKlAhX9HFP699Hd//7vJGGNatWplYmJiTFZWlnVfZmamiYiIsOl748aNRpJ58cUXbfo7ePCgCQwMrPCUwHOtXLnSeHl5mUceeaTIsbJ8dwq9/vrrxt/f3/p3YkREhElOTi53PKVNt+rSpYtp2LBhscf8/PzMfffdV2rfZfnutG7d2tSsWdOcOHHCui8vL880btzY1KlTx5qLwr6GDx9uc/7UqVONJJOammqMMWbXrl1Gknnsscds2i1evLjIVPsL5TsHz8RIjYs99dRTslgsiouL07Zt21SjRg299dZb6tatW4nndOjQQT4+PmrTpo1OnjypRo0aaeXKlYqMjCzxHIvFosDAQN1///2SpB49elRoegYAONOHH36oTz75RLNnzy7TKkeltSnPKklffPGFDh8+rMGDBxc5VqtWLb355pu69dZbde2116p///76+uuv1axZM40fP155eXllvk5p3n//fbVr107VqlWTj4+PfH19NWfOHP38888O6b8iTp06pU2bNikhIcFmWlbhSMDfffrpp7JYLLrrrruUl5dn3aKjo3XVVVfZrJBVUVu3blW/fv3UunVrTZkyxeZYeb478+bN08iRI/Xggw9q9erV+vzzz9W1a1f17dtXK1eutDvOv3PUd7Q4p06d0vfff69bbrnFZpU3b29v3X333Tp06JB2795tc06fPn1sPheOGhVOYV+3bp0kqV+/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MzMlSTt27NDo0aN1ww036LffftPo0aMrHAgAAABQ1RVOP7N3k6TMzEybLTs7u9hrTps2TYMHD9aQIUN0+eWXa/r06apbt65mzZrlyluXJMXFxWn79u1F9v/73//WFVdcUeF+yz39LCUlxXrBDz/8UL1791ZSUpK2bt2qG264ocKBeIqLLn7Q3SFUaV5Rw9wdQpXnVesBd4dQpXnVZGl7ZyPHzucVOcjdIVRp/Dl8YXPk9LO6deva7J80aZISExNt9uXk5GjLli0aP368zf6uXbtqw4YNdsVREY8++qhGjBihM2fOyBijH374QYsXL9aUKVP01ltvVbjfchc1fn5+On36tCRp9erVuueeeyRJERER1hGcqiz98+EKDfZ3dxhVknf8S8pfO9LdYVRp3h1eJsdO5N3hZeV/w4i1M3lfN035G8e5O4wqzbvNVBX8MMHdYVRZXtdMUf6/73d3GFVW5qkchd8y191huMzBgwcVGhpq/ezvX/Q36p9//qn8/HxFRUXZ7I+KilJaWprTYzzXoEGDlJeXp3Hjxun06dPq37+/ateurZdfflm33357hfstd1Fz7bXXavTo0WrXrp1++OEHLV26VJL0yy+/8J4aAAAAoBSOfE9NaGioTVFTmr+vXiydfS3LuftcZejQoRo6dKj+/PNPFRQUqGbNmnb3We5nal599VX5+Pjogw8+0KxZs1S7dm1JZ+fBde/e3e6AAAAAgKrKGOOQrawiIyPl7e1dZFTm6NGjRUZvXOno0aP6+eef9csvv+iPP/6wu79yj9TUq1dPn376aZH9L730kt3BAAAAAHAcPz8/tWjRQsnJybrpppus+5OTkyv8Thh7ZGZmasSIEVq8eLEKCs6OOHl7e+u2227Ta6+9prCwsAr1W+6Rmq1bt2rHjh3Wzx999JFuvPFG/fOf/1ROTk6FggAAAAAuBIXTz+zdymP06NF66623NHfuXP3888965JFHdODAAd1/v+uf7xoyZIi+//57ffbZZzp+/LgyMjL06aefavPmzRo6tOILwZR7pGbYsGEaP368mjRpot9++0233367brrpJr3//vs6ffq0pk+fXuFgAAAAgKrMHS/fvO2223Ts2DE9/fTTSk1NVePGjfX5558rNjbWrjgq4rPPPtPKlSt17bXXWvd169ZNs2fPtutRlnKP1Pzyyy9q2rSpJOn999/X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AHARS4GRxc6RGnvPr4ooagAAAAAX8cqXvOxcvcwr30HBVCFMPwMAAADg0RipAQAAAFzEES/ftPf8qoiiBgAAAHARihrnYPoZAAAAAI/GSA0AAADgIqx+5hwUNQAAAICLMP3MOZh+BgAAAMCjMVIDAAAAuIhXvnHAe2oYqTmXW0dqvv76a/Xu3VsxMTGyWCxasWKFzXFjjBITExUTE6PAwEC1b99eu3btsmmTnZ2thx56SJGRkQoODlafPn106NAhmzbp6em6++67FRYWprCwMN199906fvy4k+8OAAAAsOVljHUKWoU3Q1FzLrcWNadOndJVV12lV199tdjjU6dO1bRp0/Tqq69q06ZNio6OVpcuXXTixAlrm1GjRmn58uVasmSJ1q9fr5MnT6pXr17Kz//fq1b79++v7du364svvtAXX3yh7du36+6773b6/QEAAABwPrdOP+vRo4d69OhR7DFjjKZPn66JEycqISFBkrRgwQJFRUVp0aJFGjZsmDIyMjRnzhy988476ty5syRp4cKFqlu3rlavXq1u3brp559/1hdffKHvvvtOrVq1kiTNnj1bbdq00e7du9WwYUPX3CwAAADggNXPxEIBRVTahQJSUlKUlpamrl27Wvf5+/srPj5eGzZskCRt2bJFubm5Nm1iYmLUuHFja5uNGzcqLCzMWtBIUuvWrRUWFmZtU5zs7GxlZmbabAAAAIA97J565oDV06qiSlvUpKWlSZKioqJs9kdFRVmPpaWlyc/PT+Hh4aW2qVmzZpH+a9asaW1TnClTplifwQkLC1PdunXtuh8AAAAAzlFpi5pCFovF5rMxpsi+c53bprj25+tnwoQJysjIsG4HDx4sZ+QAAACArcLVz+zdYKvSFjXR0dGSVGQ05ejRo9bRm+joaOXk5Cg9Pb3UNr///nuR/v/4448io0B/5+/vr9DQUJsNAAAAsIfl/5+psXeDrUpb1MTFxSk6OlrJycnWfTk5OVq3bp3atm0rSWrRooV8fX1t2qSmpmrnzp3WNm3atFFGRoZ++OEHa5vvv/9eGRkZ1jYAAAAAPJdbVz87efKkfv31V+vnlJQUbd++XREREapXr55GjRqlpKQkNWjQQA0aNFBSUpKCgoLUv39/SVJYWJgGDx6sMWPGqHr16oqIiNDYsWPVpEkT62pol19+ubp3766hQ4fqjTfekCTdd9996tWrFyufAQAAwKW8CgrkVVBgdx+w5daiZvPmzerQoYP18+jRoyVJAwYM0Pz58zVu3DhlZWVp+PDhSk9PV6tWrbRq1SqFhIRYz3nppZfk4+Ojfv36KSsrS506ddL8+fPl7e1tbfPuu+/q4Ycftq6S1qdPnxLfjQMAAAA4iyNWL2P1s6LcWtS0b99eppQ3olosFiUmJioxMbHENgEBAZoxY4ZmzJhRYpuIiAgtXLjQnlABAAAAVFJuLWoAAACAC4kjVi9j9bOiKGoAAAAAF7EY+1cvs5Qy0+lCVWlXPwMAAADgOvv27dPgwYMVFxenwMBAXXLJJZo0aZJycnJs2h04cEC9e/dWcHCwIiMj9fDDDxdp42qM1AAAAAAuUpkXCvjvf/+rgoICvfHGG7r00ku1c+dODR06VKdOndILL7wgScrPz1fPnj1Vo0YNrV+/XseOHdOAAQNkjCn1GXdno6gBAAAAoO7du6t79+7WzxdffLF2796tWbNmWYuaVatW6aefftLBgwcVExMjSXrxxRc1cOBATZ482W0vrGf6GQAAAOAihSM19m6SlJmZabNlZ2c7PN6MjAxFRERYP2/cuFGNGze2FjSS1K1bN2VnZ2vLli0Ov35ZUdQAAAAALlK4+pm9myTVrVtXYWFh1m3KlCkOjXXv3r2aMWOG7r//fuu+tLQ0RUVF2bQLDw+Xn5+f0tLSHHr98qCoAQAAADzQwYMHlZGRYd0mTJhQbLvExERZLJZSt82bN9ucc+TIEXXv3l233nqrhgwZYnPMYrEUuYYxptj9rsIzNQAAAICrFMjuJZ1VcPb/hIaGlukZlgcffFC33357qW3q169v/ecjR46oQ4cOatOmjd58802bdtHR0fr+++9t9qWnpys3N7fICI4rUdQAAAAALuKO1c8iIyMVGRlZpraHDx9Whw4d1KJFC82bN09eXrYTu9q0aaPJkycrNTVVtWrVknR28QB/f3+1aNGiXHE5EkVNGZn/f8nR6YI8N0dStZ0qyHV3CFXeqXxy7Ewn88ivs5Fj5yPHzpVl+C3hLFk6m1tTiV9OmZuXVSn6KM6RI0fUvn171atXTy+88IL++OMP67Ho6GhJUteuXXXFFVfo7rvv1vPPP6+//vpLY8eO1dChQ9228pkkWUxl/rdeiRw6dEh169Z1dxgAAAA4j4MHD6pOnTruDsPGmTNnFBcX57CH6aOjo5WSkqKAgACH9CdJ8+fP16BBg4o99veS4cCBAxo+fLjWrFmjwMBA9e/fXy+88IL8/f0dFkt5UdSUUUFBgY4cOaKQkBC3PgRVVpmZmapbt64OHjzo1qq5KiPHzkV+nY8cOxf5dT5y7FyemF9jjE6cOKGYmJgi06YqgzNnzignJ8chffn5+Tm0oPF0TD8rIy8vr0pX8ZdFWR8gQ8WRY+civ85Hjp2L/DofOXYuT8tvWFiYu0MoUUBAAIWIk1S+EhYAAAAAyoGiBgAAAIBHo6ipovz9/TVp0iS3PrBV1ZFj5yK/zkeOnYv8Oh85di7yC0/CQgEAAAAAPBojNQAAAAA8GkUNAAAAAI9GUQMAAADAo1HUAAAAAPBoFDVuNHDgQFksFt1///1Fjg0fPlwWi0UDBw50agwjR45UixYt5O/vr6ZNmxY5fubMGQ0cOFBNmjSRj4+PbrzxRqfG40jk1/nIsfORY+civ85Hjp2L/AJnUdS4Wd26dbVkyRJlZWVZ9505c0aLFy9WvXr1nH59Y4zuvfde3XbbbcUez8/PV2BgoB5++GF17tzZ6fE4Gvl1PnLsfOTYuciv85Fj5yK/AEWN2zVv3lz16tXTsmXLrPuWLVumunXrqlmzZtZ9X3zxha699lpddNFFql69unr16qW9e/daj3fs2FEPPvigTd/Hjh2Tv7+/1qxZU+L1X3nlFY0YMUIXX3xxsceDg4M1a9YsDR06VNHR0RW9Tbchv85Hjp2PHDsX+XU+cuxc5BegqKkUBg0apHnz5lk/z507V/fee69Nm1OnTmn06NHatGmTvvzyS3l5eemmm25SQUGBJGnIkCFatGiRsrOzree8++67iomJUYcOHVxzI5UU+XU+cux85Ni5yK/zkWPnIr+40FHUVAJ333231q9fr3379mn//v369ttvddddd9m0ufnmm5WQkKAGDRqoadOmmjNnjnbs2KGffvrJetxiseijjz6ynjNv3jzrXNsLGfl1PnLsfOTYuciv85Fj5yK/uNBR1FQCkZGR6tmzpxYsWKB58+apZ8+eioyMtGmzd+9e9e/fXxdffLFCQ0MVFxcnSTpw4IAkyd/fX3fddZfmzp0rSdq+fbv+85//WB8O7NGjh6pVq6Zq1aqpUaNGrru5SoD8Oh85dj5y7Fzk1/nIsXORX1zofNwdAM669957rfNYX3vttSLHe/furbp162r27NmKiYlRQUGBGjdurJycHGubIUOGqGnTpjp06JDmzp2rTp06KTY2VpL01ltvWR8g9PX1dcEdVS7k1/nIsfORY+civ85Hjp2L/OJCRlFTSXTv3t36h0q3bt1sjh07dkw///yz3njjDV133XWSpPXr1xfpo0mTJmrZsqVmz56tRYsWacaMGdZjtWvXdmL0lR/5dT5y7Hzk2LnIr/ORY+civ7iQUdRUEt7e3vr555+t//x34eHhql69ut58803VqlVLBw4c0Pjx44vtZ8iQIXrwwQcVFBSkm2666bzX/fXXX3Xy5EmlpaUpKytL27dvlyRdccUV8vPzkyT99NNPysnJ0V9//aUTJ05Y2xS3Fn1lRX6djxw7Hzl2LvLrfOTYucgvLmgGbjNgwADTt2/fEo/37dvXDBgwwBhjTHJysrn88suNv7+/ufLKK81XX31lJJnly5fbnHPixAkTFBRkhg8fXqYY4uPjjaQiW0pKirVNbGxssW0qO/LrfOTY+cixc5Ff5yPHzkV+gbMsxhhToWoIldLBgwdVv359bdq0Sc2bN3d3OFUO+XU+cux85Ni5yK/zkWPnIr/wRBQ1VURubq5SU1M1fvx461KOcBzy63zk2PnIsXORX+cjx85FfuHJWNK5ivj2228VGxurLVu26PXXX3d3OFUO+XU+cux85Ni5yK/zkWPnIr/wZIzUAAAAAPBojNQAAAAA8GgUNQAAAAA8GkVNJTVz5kzFxcUpICBALVq00DfffGM9ZoxRYmKiYmJiFBgYqPbt22vXrl3n7XPHjh2Kj49XYGCgateuraefflrnzj5ct26dWrRooYCAAF188cVVdk5taflNTEzUZZddpuDgYIWHh6tz5876/vvvz9sn+bVVWo4l6eeff1afPn0UFhamkJAQtW7dWgcOHCi1T3Jsq7Qc//777xo4cKBiYmIUFBSk7t27a8+ePeftkxyf9fXXX6t3796KiYmRxWLRihUrrMdyc3P12GOPqUmTJgoODlZMTIzuueceHTly5Lz9kt+zSsuvJA0cOFAWi8Vma9269Xn7Jb//c74cnzx5Ug8++KDq1KmjwMBAXX755Zo1a9Z5+yXHqLTcsY40SrdkyRLj6+trZs+ebX766SczcuRIExwcbPbv32+MMebZZ581ISEh5sMPPzQ7duwwt912m6lVq5bJzMwssc+MjAwTFRVlbr/9drNjxw7z4YcfmpCQEPPCCy9Y2/z2228mKCjIjBw50vz0009m9uzZxtfX13zwwQdOv2dXOl9+3333XZOcnGz27t1rdu7caQYPHmxCQ0PN0aNHS+yT/No6X45//fVXExERYR599FGzdetWs3fvXvPpp5+a33//vcQ+ybGt0nJcUFBgWrduba677jrzww8/mP/+97/mvvvuM/Xq1TMnT54ssU9y/D+ff/65mThxovnwww+LvMfj+PHjpnPnzmbp0qXmv//9r9m4caNp1aqVadGiRal9kt//KS2/xpx990r37t1NamqqdTt27FipfZJfW+fL8ZAhQ8wll1xi1q5da1JSUswbb7xhvL29zYoVK0rskxyjMqOoqYSuueYac//999vsu+yyy8z48eNNQUGBiY6ONs8++6z12JkzZ0xYWJh5/fXXS+xz5syZJiwszJw5c8a6b8qUKSYmJsYUFBQYY4wZN26cueyyy2zOGzZsmGndurUjbqvSKC2/xcnIyDCSzOrVq0vsk/zaOl+Ob7vtNnPXXXeVq09ybKu0HO/evdtIMjt37rQey8vLMxEREWb27Nkl9kmOi1fcD8Jz/fDDD0aStXAvDvktXklFTWkvlCwO+S1ZcTlu1KiRefrpp232NW/e3Dz++OMl9kOOUZkx/aySycnJ0ZYtW9S1a1eb/V27dtWGDRuUkpKitLQ0m+P+/v6Kj4/Xhg0brPsGDhyo9u3bWz9v3LhR8fHx8vf3t+7r1q2bjhw5on379lnbnHvdbt26afPmzcrNzXXgXbrP+fJbXPs333xTYWFhuuqqq6z7yW/JzpfjgoICffbZZ/rHP/6hbt26qWbNmmrVqlWx00/IcfHOl+Ps7GxJUkBAgPWYt7e3/Pz8tH79eus+cuw4GRkZslgsuuiii6z7yK99vvrqK9WsWVP/+Mc/NHToUB09etTmOPm1z7XXXquPP/5Yhw8fljFGa9eu1S+//KJu3bpZ25BjeBKKmkrmzz//VH5+vqKiomz2R0VFKS0tTWlpadbPxR0vVKtWLdWrV8/6OS0trdhzCo+V1iYvL09//vmnnXdWOZwvv4U+/fRTVatWTQEBAXrppZeUnJysyMhI63HyW7Lz5fjo0aM6efKknn32WXXv3l2rVq3STTfdpISEBK1bt87anhyX7Hw5vuyyyxQbG6sJEyYoPT1dOTk5evbZZ5WWlqbU1FRre3LsGGfOnNH48ePVv39/hYaGWveT34rr0aOH3n33Xa1Zs0YvvviiNm3apI4dO1oLdon82uuVV17RFVdcoTp16sjPz0/du3fXzJkzde2111rbkGN4Eh93B4DiWSwWm8/GGJt95zs+ZcqUMvV57v6ytKkKzpe/Dh06aPv27frzzz81e/Zs9evXT99//71q1qwpifyWRUk5LigokCT17dtXjzzyiCSpadOm2rBhg15//XXFx8dLIsdlUVKOfX199eGHH2rw4MGKiIiQt7e3OnfurB49eti0J8f2y83N1e23366CggLNnDnT5hj5rbjbbrvN+s+NGzdWy5YtFRsbq88++0wJCQmSyK+9XnnlFX333Xf6+OOPFRsbq6+//lrDhw9XrVq11LlzZ0nkGJ6FkZpKJjIyUt7e3jajBpJ09OhRRUVFKTo6WpJKPF6S6OjoYs+R/vdfWUpq4+Pjo+rVq1fshiqZ8+W3UHBwsC699FK1bt1ac+bMkY+Pj+bMmVNiv+T3f86X48jISPn4+OiKK66wOX755ZeXuvoZOf6fsnyPW7Rooe3bt+v48eNKTU3VF198oWPHjikuLq7Efslx+eTm5qpfv35KSUlRcnKyzShNcchvxdWqVUuxsbGlruBHfssuKytL//znPzVt2jT17t1bV155pR588EHddttteuGFF0o8jxyjMqOoqWT8/PzUokULJScn2+xPTk5W27ZtFRcXp+joaJvjOTk5Wrdundq2bVtiv23atNHXX3+tnJwc675Vq1YpJiZG9evXt7Y597qrVq1Sy5Yt5evr64C7c7/z5bckxhibaQ/nIr//c74c+/n56eqrr9bu3bttjv/yyy+KjY0tsV9y/D/l+R6HhYWpRo0a2rNnjzZv3qy+ffuW2C85LrvCgmbPnj1avXp1mX6skd+KO3bsmA4ePKhatWqV2Ib8ll1ubq5yc3Pl5WX7M9Db29s6ml4ccoxKzaXLEqBMCpdqnTNnjvnpp5/MqFGjTHBwsNm3b58x5uySzmFhYWbZsmVmx44d5o477iiypPP48ePN3Xffbf18/PhxExUVZe644w6zY8cOs2zZMhMaGlrsMoyPPPKI+emnn8ycOXOq5DKMpeX35MmTZsKECWbjxo1m3759ZsuWLWbw4MHG39/fZiUp8lu6832Hly1bZnx9fc2bb75p9uzZY2bMmGG8vb3NN998Y+2DHJfufDl+7733zNq1a83evXvNihUrTGxsrElISLDpgxyX7MSJE2bbtm1m27ZtRpKZNm2a2bZtm9m/f7/Jzc01ffr0MXXq1DHbt2+3WXY4Ozvb2gf5LVlp+T1x4oQZM2aM2bBhg0lJSTFr1641bdq0MbVr1+bvuXIoLcfGGBMfH28aNWpk1q5da3777Tczb948ExAQYGbOnGntgxzDk1DUVFKvvfaaiY2NNX5+fqZ58+Zm3bp11mMFBQVm0qRJJjo62vj7+5vrr7/e7Nixw+b8AQMGmPj4eJt9P/74o7nuuuuMv7+/iY6ONomJidYlGAt99dVXplmzZsbPz8/Ur1/fzJo1y2n36E4l5TcrK8vcdNNNJiYmxvj5+ZlatWqZPn36mB9++MHmfPJ7fqV9h40xZs6cOebSSy81AQEB5qqrrirybgRyfH6l5fjll182derUMb6+vqZevXrm8ccft/nBbQw5Ls3atWuNpCLbgAEDTEpKSrHHJJm1a9da+yC/JSstv6dPnzZdu3Y1NWrUsH5/BwwYYA4cOGDTB/ktXWk5NsaY1NRUM3DgQBMTE2MCAgJMw4YNzYsvvmiTL3IMT2Ix5pzXwAIAAACAB+GZGgAAAAAejaIGAAAAgEejqAEAAADg0ShqAAAAAHg0ihoAAAAAHo2iBgAAAIBHo6gBAAAA4NEoagAAAAB4NIoaAPBA7du316hRo6yf69evr+nTp5d6jsVi0YoVKyp8zcTERDVt2rTC5wMA4CwUNQDgQr1791bnzp2LPbZx40ZZLBZt3bq13P1u2rRJ9913X4XjslgspW4DBw7U2LFj9eWXX1b4GgAAOIuPuwMAgAvJ4MGDlZCQoP379ys2Ntbm2Ny5c9W0aVM1b9683P3WqFHDrrhSU1Ot/7x06VI9+eST2r17t3VfYGCgqlWrpmrVqtl1HQAAnIGRGgBwoV69eqlmzZqaP3++zf7Tp09r6dKlGjx4sI4dO6Y77rhDderUUVBQkJo0aaLFixeX2u+508/27Nmj66+/XgEBAbriiiuUnJxc6vnR0dHWLSwsTBaLpci+c6efDRw4UDfeeKOSkpIUFRWliy66SE899ZTy8vL06KOPKiIiQnXq1NHcuXNtrnX48GHddtttCg8PV/Xq1dW3b1/t27evLOkDAKBYFDUA4EI+Pj665557NH/+fBljrPvff/995eTk6M4779SZM2fUokULffrpp9q5c6fuu+8+3X333fr+++/LdI2CggIlJCTI29tb3333nV5//XU99thjTrmfNWvW6MiRI/r66681bdo0JSYmqlevXgoPD9f333+v+++/X/fff78OHjwo6Wzx1qFDB1WrVk1ff/211q9fr2rVqql79+7KyclxSowAgKqPogYAXOzee+/Vvn379NVXX1n3zZ07VwkJCQoPD1ft2rU1duxYNW3aVBdffLEeeughdevWTe+//36Z+l+9erV+/vlnvfPOO2ratKmuv/56JSUlOeVeIiIi9Morr6hhw4a699571bBhQ50+fVr//Oc/1aBBA02YMEF+fn769ttvJUlLliyRl5eX3nrrLTVp0kSXX3655s2bpwMHDtjkAwCA8uCZGgBwscsuu0xt27bV3Llz1aFDB+3du1fffPONVq1aJUnKz8/Xs88+q6VLl+rw4cPKzs5Wdna2goODy9T/zz//rHr16qlOnTrWfW3atHHKvTRq1EheXv/772NRUVFq3Lix9bO3t7eqV6+uo0ePSpK2bNmiX3/9VSEhITb9nDlzRnv37nVKjACAqo+iBgDcYPDgwXrwwQf12muvad68eYqNjVWnTp0kSS+++KJeeuklTZ8+XU2aNFFwcLBGjRpV5ulZf5/WVshisTg0/kK+vr5FrlPcvoKCAklnp8a1aNFC7777bpG+7F3sAABw4WL6GQC4Qb9+/eTt7a1FixZpwYIFGjRokLXw+Oabb9S3b1/ddddduuqqq3TxxRdrz549Ze77iiuu0IEDB3TkyBHrvo0bNzr8HiqiefPm2rNnj2rWrKlLL73UZgsLC3N3eAAAD0VRAwBuUK1aNd1222365z//qSNHjmjgwIHWY5deeqmSk5O1YcMG/fzzzxo2bJjS0tLK3Hfnzp3VsGFD3XPPPfrPf/6jb775RhMnTnTCXZTfnXfeqcjISPXt21fffPONUlJStG7dOo0cOVKHDh1yd3gAAA9FUQMAbjJ48GClp6erc+fOqlevnnX/E088oebNm6tbt25q3769oqOjdeONN5a5Xy8vLy1fvlzZ2dm65pprNGTIEE2ePNkJd1B+QUFB+vrrr1WvXj0lJCTo8ssv17333qusrCyFhoa6OzwAgIeymOImXwMAAACAh2CkBgAAAIBHo6gBAAAA4NEoagAAAAB4NIoaAAAAAB6NogYAAACAR6OoAQAAAODRKGoAAAAAeDSKGgAAAAAejaIGAAAAgEejqAEAAADg0ShqAAAAAHi0/wOEpMAlYk4nEgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Select the point I want\n", "dsp = ds.isel(point=0)\n", "\n", "plt.figure(figsize=[10, 5])\n", "ax = plt.gca()\n", "art = ax.pcolormesh(\n", " dsp.valid_time,\n", " dsp.isobaricInhPa,\n", " dsp.t.transpose() - 273.15,\n", " edgecolor=\"k\",\n", " linewidth=0.5,\n", " cmap=\"Spectral_r\",\n", ")\n", "plt.colorbar(art, ax=ax, label=\"Temperature (C)\")\n", "ax.invert_yaxis()\n", "ax.set_ylabel(\"Pressure (hPa)\")\n", "ax.set_xlabel(\"Valid Time\")\n", "ax.set_title(\"HRRR\", fontweight=\"bold\", loc=\"left\")\n", "ax.set_title(\n", " f\"{dsp.latitude.values:.2f} Latitude, {dsp.longitude.values:.2f} Longitude\",\n", " loc=\"right\",\n", ")\n", "\n", "ax.xaxis.set_major_locator(mdates.HourLocator(range(0, 24, 3)))\n", "ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%b-%d\\n%H:%M\"))" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "ename": "", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n", "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n", "\u001b[1;31mClick here for more info. \n", "\u001b[1;31mView Jupyter log for further details." ] } ], "source": [ "%%time\n", "# This crashes my kernel!!!\n", "FH.xarray(r\"(?:HGT|TMP):\\d+00 mb:\", remove_grib=False)" ] } ], "metadata": { "kernelspec": { "display_name": "herbie-dev", "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.2" } }, "nbformat": 4, "nbformat_minor": 2 }