@@ -1054,7 +1054,9 @@ def plot_bars(
10541054 self ,
10551055 aggregator ,
10561056 dodge ,
1057+ gap ,
10571058 width ,
1059+ fill ,
10581060 color ,
10591061 capsize ,
10601062 err_kws ,
@@ -1072,7 +1074,9 @@ def plot_bars(
10721074 if dodge and capsize is not None :
10731075 capsize = capsize / len (self ._hue_map .levels )
10741076
1075- err_kws .setdefault ("color" , ".26" )
1077+ if not fill :
1078+ plot_kws .setdefault ("linewidth" , 1.5 * mpl .rcParams ["lines.linewidth" ])
1079+
10761080 err_kws .setdefault ("linewidth" , 1.5 * mpl .rcParams ["lines.linewidth" ])
10771081
10781082 for sub_vars , sub_data in self .iter_data (iter_vars ,
@@ -1091,6 +1095,8 @@ def plot_bars(
10911095 agg_data ["width" ] = width * self ._native_width
10921096 if dodge :
10931097 self ._dodge (sub_vars , agg_data )
1098+ if gap :
1099+ agg_data ["width" ] *= 1 - gap
10941100
10951101 agg_data ["edge" ] = agg_data [self .orient ] - agg_data ["width" ] / 2
10961102 self ._invert_scale (ax , agg_data )
@@ -1106,17 +1112,22 @@ def plot_bars(
11061112 y = agg_data ["edge" ], width = agg_data ["x" ], height = agg_data ["width" ]
11071113 )
11081114
1109- maincolor = self ._hue_map (sub_vars ["hue" ]) if "hue" in sub_vars else color
1115+ main_color = self ._hue_map (sub_vars ["hue" ]) if "hue" in sub_vars else color
11101116
11111117 # Set both color and facecolor for property cycle logic
1112- kws ["color" ] = maincolor
1113- kws ["facecolor" ] = maincolor
11141118 kws ["align" ] = "edge"
1119+ if fill :
1120+ kws .update (color = main_color , facecolor = main_color )
1121+ else :
1122+ kws .update (color = main_color , edgecolor = main_color , facecolor = "none" )
11151123
11161124 bar_func (** {** kws , ** plot_kws })
11171125
11181126 if aggregator .error_method is not None :
1119- self .plot_errorbars (ax , agg_data , capsize , err_kws .copy ())
1127+ self .plot_errorbars (
1128+ ax , agg_data , capsize ,
1129+ {"color" : ".26" if fill else main_color , ** err_kws }
1130+ )
11201131
11211132 self ._configure_legend (ax , ax .fill_between )
11221133
@@ -2728,9 +2739,9 @@ def swarmplot(
27282739def barplot (
27292740 data = None , * , x = None , y = None , hue = None , order = None , hue_order = None ,
27302741 estimator = "mean" , errorbar = ("ci" , 95 ), n_boot = 1000 , units = None , seed = None ,
2731- orient = None , color = None , palette = None , saturation = .75 , hue_norm = None , width = .8 ,
2732- dodge = "auto" , native_scale = False , formatter = None , legend = "auto" , capsize = 0 ,
2733- err_kws = None , ci = deprecated , errcolor = deprecated , errwidth = deprecated ,
2742+ orient = None , color = None , palette = None , saturation = .75 , fill = True , hue_norm = None ,
2743+ width = .8 , dodge = "auto" , gap = 0 , native_scale = False , formatter = None , legend = "auto" ,
2744+ capsize = 0 , err_kws = None , ci = deprecated , errcolor = deprecated , errwidth = deprecated ,
27342745 ax = None , ** kwargs ,
27352746):
27362747
@@ -2769,6 +2780,7 @@ def barplot(
27692780 hue_order = p ._palette_without_hue_backcompat (palette , hue_order )
27702781 palette , hue_order = p ._hue_backcompat (color , palette , hue_order )
27712782
2783+ saturation = saturation if fill else 1
27722784 p .map_hue (palette = palette , order = hue_order , norm = hue_norm , saturation = saturation )
27732785 color = _default_color (ax .bar , hue , color , kwargs , saturation = saturation )
27742786
@@ -2782,7 +2794,9 @@ def barplot(
27822794 aggregator = aggregator ,
27832795 dodge = dodge ,
27842796 width = width ,
2797+ gap = gap ,
27852798 color = color ,
2799+ fill = fill ,
27862800 capsize = capsize ,
27872801 err_kws = err_kws ,
27882802 plot_kws = kwargs ,
@@ -2815,13 +2829,15 @@ def barplot(
28152829 {color}
28162830 {palette}
28172831 {saturation}
2832+ {fill}
28182833 {hue_norm}
28192834 {width}
2820- {capsize}
28212835 {dodge}
2836+ {gap}
28222837 {native_scale}
28232838 {formatter}
28242839 {legend}
2840+ {capsize}
28252841 {err_kws}
28262842 {ci}
28272843 {errcolor}
@@ -3007,8 +3023,8 @@ def pointplot(
30073023
30083024def countplot (
30093025 data = None , * , x = None , y = None , hue = None , order = None , hue_order = None ,
3010- orient = None , color = None , palette = None , saturation = .75 , hue_norm = None ,
3011- stat = "count" , width = .8 , dodge = "auto" , native_scale = False , formatter = None ,
3026+ orient = None , color = None , palette = None , saturation = .75 , fill = True , hue_norm = None ,
3027+ stat = "count" , width = .8 , dodge = "auto" , gap = 0 , native_scale = False , formatter = None ,
30123028 legend = "auto" , ax = None , ** kwargs
30133029):
30143030
@@ -3049,6 +3065,7 @@ def countplot(
30493065 hue_order = p ._palette_without_hue_backcompat (palette , hue_order )
30503066 palette , hue_order = p ._hue_backcompat (color , palette , hue_order )
30513067
3068+ saturation = saturation if fill else 1
30523069 p .map_hue (palette = palette , order = hue_order , norm = hue_norm , saturation = saturation )
30533070 color = _default_color (ax .bar , hue , color , kwargs , saturation )
30543071
@@ -3068,7 +3085,9 @@ def countplot(
30683085 aggregator = aggregator ,
30693086 dodge = dodge ,
30703087 width = width ,
3088+ gap = gap ,
30713089 color = color ,
3090+ fill = fill ,
30723091 capsize = 0 ,
30733092 err_kws = {},
30743093 plot_kws = kwargs ,
@@ -3409,19 +3428,22 @@ def catplot(
34093428 aggregator = EstimateAggregator (
34103429 estimator , errorbar , n_boot = n_boot , seed = seed
34113430 )
3412-
34133431 err_kws , capsize = p ._err_kws_backcompat (
34143432 _normalize_kwargs (kwargs .pop ("err_kws" , {}), mpl .lines .Line2D ),
34153433 errcolor = kwargs .pop ("errcolor" , deprecated ),
34163434 errwidth = kwargs .pop ("errwidth" , deprecated ),
34173435 capsize = kwargs .pop ("capsize" , 0 ),
34183436 )
3437+ gap = kwargs .pop ("gap" , 0 )
3438+ fill = kwargs .pop ("fill" , True )
34193439
34203440 p .plot_bars (
34213441 aggregator = aggregator ,
34223442 dodge = dodge ,
34233443 width = width ,
3444+ gap = gap ,
34243445 color = color ,
3446+ fill = fill ,
34253447 capsize = capsize ,
34263448 err_kws = err_kws ,
34273449 plot_kws = kwargs ,
@@ -3441,11 +3463,16 @@ def catplot(
34413463 denom = 100 if stat == "percent" else 1
34423464 p .plot_data [count_axis ] /= len (p .plot_data ) / denom
34433465
3466+ gap = kwargs .pop ("gap" , 0 )
3467+ fill = kwargs .pop ("fill" , True )
3468+
34443469 p .plot_bars (
34453470 aggregator = aggregator ,
34463471 dodge = dodge ,
34473472 width = width ,
3473+ gap = gap ,
34483474 color = color ,
3475+ fill = fill ,
34493476 capsize = 0 ,
34503477 err_kws = {},
34513478 plot_kws = kwargs ,
0 commit comments