.. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_correlated_examples_plot_1_meteorology.py: Meteorological, 2D{1,1,2,1,1} dataset ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: default The following dataset is obtained from `NOAA/NCEP Global Forecast System (GFS) Atmospheric Model `_ and subsequently converted to the CSD model file-format. The dataset consists of two spatial dimensions describing the geographical coordinates of the earth surface and five dependent variables with 1) surface temperature, 2) air temperature at 2 m, 3) relative humidity, 4) air pressure at sea level as the four `scalar` quantity_type dependent variables, and 5) wind velocity as the two-component `vector`, quantity_type dependent variable. Let's import the `csdmpy` module and load this dataset. .. code-block:: default import csdmpy as cp filename = "https://osu.box.com/shared/static/6uhrtdxfisl4a14x9pndyze2mv414zyg.csdf" multi_dataset = cp.load(filename) The tuple of dimension and dependent variable objects from ``multi_dataset`` instance are .. code-block:: default x = multi_dataset.dimensions y = multi_dataset.dependent_variables The dataset contains two dimension objects representing the `longitude` and `latitude` of the earth's surface. The labels along thee respective dimensions are .. code-block:: default x[0].label .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'longitude' .. code-block:: default x[1].label .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'latitude' There are a total of five dependent variables stored in this dataset. The first dependent variable is the surface air temperature. The data structure of this dependent variable is .. code-block:: default print(y[0].data_structure) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none { "type": "internal", "description": "The label 'tmpsfc' is the standard attribute name for 'surface air temperature'.", "name": "Surface temperature", "unit": "K", "quantity_name": "temperature", "numeric_type": "float64", "quantity_type": "scalar", "component_labels": [ "tmpsfc - surface air temperature" ], "components": [ [ "292.8152160644531, 293.0152282714844, ..., 301.8152160644531, 303.8152160644531" ] ] } If you have followed all previous examples, the above data structure should be self-explanatory. We will use the following snippet to plot the dependent variables of scalar `quantity_type`. .. code-block:: default import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable def plot_scalar(yx): fig, ax = plt.subplots(1, 1, figsize=(6, 3)) # Set the extents of the image plot. extent = [ x[0].coordinates[0].value, x[0].coordinates[-1].value, x[1].coordinates[0].value, x[1].coordinates[-1].value, ] # Add the image plot. im = ax.imshow(yx.components[0], origin="lower", extent=extent, cmap="coolwarm") # Add a colorbar. divider = make_axes_locatable(ax) cax = divider.append_axes("right", size="5%", pad=0.05) cbar = fig.colorbar(im, cax) cbar.ax.set_ylabel(yx.axis_label[0]) # Set up the axes label and figure title. ax.set_xlabel(x[0].axis_label) ax.set_ylabel(x[1].axis_label) ax.set_title(yx.name) # Set up the grid lines. ax.grid(color="k", linestyle="--", linewidth=0.5) plt.tight_layout() plt.show() Now to plot the data from the dependent variable. .. code-block:: default plot_scalar(y[0]) .. image:: /auto_examples/correlated_examples/images/sphx_glr_plot_1_meteorology_001.png :alt: Surface temperature :class: sphx-glr-single-img Similarly, other dependent variables with their respective plots are .. code-block:: default y[1].name .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'Air temperature at 2m' .. code-block:: default plot_scalar(y[1]) .. image:: /auto_examples/correlated_examples/images/sphx_glr_plot_1_meteorology_002.png :alt: Air temperature at 2m :class: sphx-glr-single-img .. code-block:: default y[3].name .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'Relative humidity' .. code-block:: default plot_scalar(y[3]) .. image:: /auto_examples/correlated_examples/images/sphx_glr_plot_1_meteorology_003.png :alt: Relative humidity :class: sphx-glr-single-img .. code-block:: default y[4].name .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'Air pressure at sea level' .. code-block:: default plot_scalar(y[4]) .. image:: /auto_examples/correlated_examples/images/sphx_glr_plot_1_meteorology_004.png :alt: Air pressure at sea level :class: sphx-glr-single-img Notice, we skipped the dependent variable at index two. The reason is that this particular dependent variable is a vector dataset, .. code-block:: default y[2].quantity_type .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'vector_2' .. code-block:: default y[2].name .. rst-class:: sphx-glr-script-out Out: .. code-block:: none 'Wind velocity' which represents the wind velocity, and requires a vector visualization routine. To visualize the vector data, we use the matplotlib quiver plot. .. code-block:: default def plot_vector(yx): fig, ax = plt.subplots(1, 1, figsize=(6, 3)) magnitude = np.sqrt(yx.components[0] ** 2 + yx.components[1] ** 2) cf = ax.quiver( x[0].coordinates, x[1].coordinates, yx.components[0], yx.components[1], magnitude, pivot="middle", cmap="inferno", ) divider = make_axes_locatable(ax) cax = divider.append_axes("right", size="5%", pad=0.05) cbar = fig.colorbar(cf, cax) cbar.ax.set_ylabel(yx.name + " / " + str(yx.unit)) ax.set_xlim([x[0].coordinates[0].value, x[0].coordinates[-1].value]) ax.set_ylim([x[1].coordinates[0].value, x[1].coordinates[-1].value]) # Set axes labels and figure title. ax.set_xlabel(x[0].axis_label) ax.set_ylabel(x[1].axis_label) ax.set_title(yx.name) # Set grid lines. ax.grid(color="gray", linestyle="--", linewidth=0.5) plt.tight_layout() plt.show() .. code-block:: default plot_vector(y[2]) .. image:: /auto_examples/correlated_examples/images/sphx_glr_plot_1_meteorology_005.png :alt: Wind velocity :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 3.009 seconds) .. _sphx_glr_download_auto_examples_correlated_examples_plot_1_meteorology.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_1_meteorology.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_1_meteorology.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_