def plot_track(track_list, geodata=None, ref_shape=None):
    """
    Plot storm tracks.

    .. _Axes: https://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes

    Parameters
    ----------
    track_list: list
        List of tracks provided by DATing.
    geodata: dictionary or None, optional
        Optional dictionary containing geographical information about
        the field. If not None, plots the contours in a georeferenced frame.
    ref_shape: (vertical, horizontal)
        Shape of the 2D precipitation field used to find the cells' contours.
        This is only needed only if `geodata=None`.

        IMPORTANT: If `geodata=None` it is assumed that the y-origin of the reference
        precipitation fields is the upper-left corner (yorigin="upper").

    Returns
    -------
    ax: fig Axes_
        Figure axes.
    """
    ax = plt.gca()
    pix2coord = _pix2coord_factory(geodata, ref_shape)

    color = iter(plt.cm.spring(np.linspace(0, 1, len(track_list))))
    for track in track_list:
        cen_x, cen_y = pix2coord(track.cen_x, track.cen_y)
        ax.plot(cen_x, cen_y, c=next(color), zorder=40)
    return ax
Plot storm tracks.

.. _Axes: https://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes

Parameters
----------
track_list: list
List of tracks provided by DATing.
geodata: dictionary or None, optional
Optional dictionary containing geographical information about
the field. If not None, plots the contours in a georeferenced frame.
ref_shape: (vertical, horizontal)
Shape of the 2D precipitation field used to find the cells' contours.
This is only needed only if `geodata=None`.

IMPORTANT: If `geodata=None` it is assumed that the y-origin of the reference
precipitation fields is the upper-left corner (yorigin="upper").

Returns
-------
ax: fig Axes_
Figure axes.
pysteps/visualization/thunderstorms.py