Source code for huracanpy.plot._doughnut

import matplotlib.pyplot as plt


[docs] def doughnut(values, reference_total, ax=None, **kwargs): """Plot a pie chart with a doughnut shape with thickness showing the total number of points relative to a reference total Based on Figs. 1/2 from Roberts et al. (2020) - Impact of Model Resolution on Tropical Cyclone Simulation Using the HighResMIP–PRIMAVERA Multimodel Ensemble https://doi.org/10.1175/JCLI-D-19-0639.1 Parameters ---------- values : array_like The values for each individual section of the doughnut reference_total : scalar The value to compare against the total of `values`. If the total of `values` is larger than `reference_total` the doughnut will be thicker, and if the total of `values` is smaller than `reference_total`, the doughnut will be thinner ax : matplotlib.axes.Axes, optional Axes to draw the doughnut on. Default will use the most recent axes **kwargs Remaining arguments are passed to :py:func:`matplotlib.pyplot.pie` Returns ------- tuple Returns the three variables returned from :py:func:`matplotlib.pyplot.pie`. Unlike :py:func:`matplotlib.pyplot.pie`, autotexts will return an empty list if no labels are specified, so the length of the tuple is always three """ if ax is None: ax = plt.gca() ratio = sum(values) / reference_total radius = 1 - 1 / (3 * ratio) radius = max(radius, 0.05) radius = min(radius, 1.0) if "wedgeprops" not in kwargs: kwargs["wedgeprops"] = dict() kwargs["wedgeprops"]["width"] = radius if "autopct" in kwargs: patches, texts, autotexts = ax.pie(values, **kwargs) else: patches, texts = ax.pie(values, **kwargs) autotexts = [] return patches, texts, autotexts