@@ -3083,7 +3083,7 @@ def pie(self, x, explode=None, labels=None, colors=None,
30833083 autopct = None , pctdistance = 0.6 , shadow = False , labeldistance = 1.1 ,
30843084 startangle = 0 , radius = 1 , counterclock = True ,
30853085 wedgeprops = None , textprops = None , center = (0 , 0 ),
3086- frame = False , rotatelabels = False , * , normalize = True ):
3086+ frame = False , rotatelabels = False , * , normalize = True , hatch = None ):
30873087 """
30883088 Plot a pie chart.
30893089
@@ -3109,29 +3109,34 @@ def pie(self, x, explode=None, labels=None, colors=None,
31093109 A sequence of colors through which the pie chart will cycle. If
31103110 *None*, will use the colors in the currently active cycle.
31113111
3112+ hatch : str or list, default: None
3113+ Hatching pattern applied to all pie wedges or sequence of patterns
3114+ through which the chart will cycle. For a list of valid patterns,
3115+ see :doc:`/gallery/shapes_and_collections/hatch_style_reference`.
3116+
3117+ .. versionadded:: 3.7
3118+
31123119 autopct : None or str or callable, default: None
3113- If not *None*, is a string or function used to label the wedges
3114- with their numeric value. The label will be placed inside the
3115- wedge. If it is a format string, the label will be ``fmt % pct``.
3116- If it is a function, it will be called.
3120+ If not *None*, *autopct* a string or function used to label the
3121+ wedges with their numeric value. The label will be placed inside
3122+ the wedge. If it is a format string, the label will be
3123+ ``fmt % pct``. If it is a function, it will be called.
31173124
31183125 pctdistance : float, default: 0.6
3119- The ratio between the center of each pie slice and the start of
3120- the text generated by *autopct*. Ignored if *autopct* is *None*.
3126+ The relative distance along the radius at which the the text
3127+ generated by *autopct* is drawn. To draw the text outside the pie,
3128+ set *pctdistance* > 1. This parameter is ignored if *autopct* is
3129+ ``None``.
3130+
3131+ labeldistance : float or None, default: 1.1
3132+ The relative distance along the radius at which the labels are
3133+ drawn. To draw the labels inside the pie, set *labeldistance* < 1.
3134+ If set to ``None``, labels are not drawn but are still stored for
3135+ use in `.legend`.
31213136
31223137 shadow : bool, default: False
31233138 Draw a shadow beneath the pie.
31243139
3125- normalize : bool, default: True
3126- When *True*, always make a full pie by normalizing x so that
3127- ``sum(x) == 1``. *False* makes a partial pie if ``sum(x) <= 1``
3128- and raises a `ValueError` for ``sum(x) > 1``.
3129-
3130- labeldistance : float or None, default: 1.1
3131- The radial distance at which the pie labels are drawn.
3132- If set to ``None``, label are not drawn, but are stored for use in
3133- ``legend()``
3134-
31353140 startangle : float, default: 0 degrees
31363141 The angle by which the start of the pie is rotated,
31373142 counterclockwise from the x-axis.
@@ -3143,11 +3148,11 @@ def pie(self, x, explode=None, labels=None, colors=None,
31433148 Specify fractions direction, clockwise or counterclockwise.
31443149
31453150 wedgeprops : dict, default: None
3146- Dict of arguments passed to the wedge objects making the pie.
3147- For example, you can pass in ``wedgeprops = {'linewidth': 3}``
3148- to set the width of the wedge border lines equal to 3.
3149- For more details, look at the doc/arguments of the wedge object.
3150- By default, ``clip_on=False`` .
3151+ Dict of arguments passed to each `.patches.Wedge` of the pie.
3152+ For example, ``wedgeprops = {'linewidth': 3}`` sets the width of
3153+ the wedge border lines equal to 3. By default, ``clip_on=False`` .
3154+ When there is a conflict between these properties and other
3155+ keywords, properties passed to *wedgeprops* take precedence .
31513156
31523157 textprops : dict, default: None
31533158 Dict of arguments to pass to the text objects.
@@ -3161,6 +3166,11 @@ def pie(self, x, explode=None, labels=None, colors=None,
31613166 rotatelabels : bool, default: False
31623167 Rotate each label to the angle of the corresponding slice if true.
31633168
3169+ normalize : bool, default: True
3170+ When *True*, always make a full pie by normalizing x so that
3171+ ``sum(x) == 1``. *False* makes a partial pie if ``sum(x) <= 1``
3172+ and raises a `ValueError` for ``sum(x) > 1``.
3173+
31643174 data : indexable object, optional
31653175 DATA_PARAMETER_PLACEHOLDER
31663176
@@ -3215,6 +3225,8 @@ def pie(self, x, explode=None, labels=None, colors=None,
32153225 def get_next_color ():
32163226 return next (color_cycle )
32173227
3228+ hatch_cycle = itertools .cycle (np .atleast_1d (hatch ))
3229+
32183230 _api .check_isinstance (Number , radius = radius , startangle = startangle )
32193231 if radius <= 0 :
32203232 raise ValueError (f'radius must be a positive number, not { radius } ' )
@@ -3241,6 +3253,7 @@ def get_next_color():
32413253 w = mpatches .Wedge ((x , y ), radius , 360. * min (theta1 , theta2 ),
32423254 360. * max (theta1 , theta2 ),
32433255 facecolor = get_next_color (),
3256+ hatch = next (hatch_cycle ),
32443257 clip_on = False ,
32453258 label = label )
32463259 w .set (** wedgeprops )
0 commit comments