Skip to content

Commit ff98856

Browse files
committed
Merge pull request #6481 from jenshnielsen/default-boxplot-style-rebase
API: Default boxplot style
1 parent 042ee89 commit ff98856

40 files changed

+704
-818
lines changed

lib/matplotlib/axes/_axes.py

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3363,6 +3363,8 @@ def _update_dict(dictionary, rc_name, properties):
33633363
# filled symbol, if the users want more control use
33643364
# flierprops
33653365
flierprops['color'] = color
3366+
flierprops['markerfacecolor'] = color
3367+
flierprops['markeredgecolor'] = color
33663368

33673369
# replace medians if necessary:
33683370
if usermedians is not None:
@@ -3575,23 +3577,34 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True,
35753577

35763578
# box properties
35773579
if patch_artist:
3578-
final_boxprops = dict(linestyle='solid', edgecolor='black',
3579-
facecolor='white', linewidth=1)
3580+
final_boxprops = dict(
3581+
linestyle=rcParams['boxplot.boxprops.linestyle'],
3582+
edgecolor=rcParams['boxplot.boxprops.color'],
3583+
facecolor=rcParams['patch.facecolor'],
3584+
linewidth=rcParams['boxplot.boxprops.linewidth']
3585+
)
3586+
if rcParams['_internal.classic_mode']:
3587+
final_boxprops['facecolor'] = 'white'
35803588
else:
3581-
final_boxprops = dict(linestyle='-', color='blue')
3589+
final_boxprops = dict(
3590+
linestyle=rcParams['boxplot.boxprops.linestyle'],
3591+
color=rcParams['boxplot.boxprops.color'],
3592+
)
35823593

35833594
if boxprops is not None:
35843595
final_boxprops.update(boxprops)
35853596

35863597
# other (cap, whisker) properties
35873598
final_whiskerprops = dict(
3588-
linestyle='--',
3589-
color='blue',
3599+
linestyle=rcParams['boxplot.whiskerprops.linestyle'],
3600+
linewidth=rcParams['boxplot.whiskerprops.linewidth'],
3601+
color=rcParams['boxplot.whiskerprops.color'],
35903602
)
35913603

35923604
final_capprops = dict(
3593-
linestyle='-',
3594-
color='black',
3605+
linestyle=rcParams['boxplot.capprops.linestyle'],
3606+
linewidth=rcParams['boxplot.capprops.linewidth'],
3607+
color=rcParams['boxplot.capprops.color'],
35953608
)
35963609

35973610
if capprops is not None:
@@ -3601,23 +3614,44 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True,
36013614
final_whiskerprops.update(whiskerprops)
36023615

36033616
# set up the default flier properties
3604-
final_flierprops = dict(linestyle='none', marker='+', color='blue')
3617+
final_flierprops = dict(
3618+
linestyle=rcParams['boxplot.flierprops.linestyle'],
3619+
linewidth=rcParams['boxplot.flierprops.linewidth'],
3620+
color=rcParams['boxplot.flierprops.color'],
3621+
marker=rcParams['boxplot.flierprops.marker'],
3622+
markerfacecolor=rcParams['boxplot.flierprops.markerfacecolor'],
3623+
markeredgecolor=rcParams['boxplot.flierprops.markeredgecolor'],
3624+
markersize=rcParams['boxplot.flierprops.markersize'],
3625+
)
36053626

36063627
# flier (outlier) properties
36073628
if flierprops is not None:
36083629
final_flierprops.update(flierprops)
36093630

36103631
# median line properties
3611-
final_medianprops = dict(linestyle='-', color='red')
3632+
final_medianprops = dict(
3633+
linestyle=rcParams['boxplot.medianprops.linestyle'],
3634+
linewidth=rcParams['boxplot.medianprops.linewidth'],
3635+
color=rcParams['boxplot.medianprops.color'],
3636+
)
36123637
if medianprops is not None:
36133638
final_medianprops.update(medianprops)
36143639

36153640
# mean (line or point) properties
36163641
if meanline:
3617-
final_meanprops = dict(linestyle='--', color='black')
3642+
final_meanprops = dict(
3643+
linestyle=rcParams['boxplot.meanprops.linestyle'],
3644+
linewidth=rcParams['boxplot.meanprops.linewidth'],
3645+
color=rcParams['boxplot.meanprops.color'],
3646+
)
36183647
else:
3619-
final_meanprops = dict(linestyle='none', markerfacecolor='red',
3620-
marker='s')
3648+
final_meanprops = dict(
3649+
linestyle='',
3650+
marker=rcParams['boxplot.meanprops.marker'],
3651+
markerfacecolor=rcParams['boxplot.meanprops.markerfacecolor'],
3652+
markeredgecolor=rcParams['boxplot.meanprops.markeredgecolor'],
3653+
markersize=rcParams['boxplot.meanprops.markersize'],
3654+
)
36213655
if meanprops is not None:
36223656
final_meanprops.update(meanprops)
36233657

lib/matplotlib/mpl-data/stylelib/classic.mplstyle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,10 @@ boxplot.meanprops.color: r
348348
boxplot.meanprops.linestyle: -
349349
boxplot.meanprops.linewidth: 1.0
350350
boxplot.medianprops.color: r
351+
boxplot.meanprops.marker: s
352+
boxplot.meanprops.markerfacecolor: r
353+
boxplot.meanprops.markeredgecolor: k
354+
boxplot.meanprops.markersize: 6.0
351355
boxplot.medianprops.linestyle: -
352356
boxplot.medianprops.linewidth: 1.0
353357
boxplot.notch: False

lib/matplotlib/rcsetup.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -926,21 +926,21 @@ def validate_hist_bins(s):
926926
'boxplot.showfliers': [True, validate_bool],
927927
'boxplot.meanline': [False, validate_bool],
928928

929-
'boxplot.flierprops.color': ['C0', validate_color],
930-
'boxplot.flierprops.marker': ['+', six.text_type],
931-
'boxplot.flierprops.markerfacecolor': ['auto', validate_color_or_auto],
929+
'boxplot.flierprops.color': ['k', validate_color],
930+
'boxplot.flierprops.marker': ['o', six.text_type],
931+
'boxplot.flierprops.markerfacecolor': ['none', validate_color_or_auto],
932932
'boxplot.flierprops.markeredgecolor': ['k', validate_color],
933933
'boxplot.flierprops.markersize': [6, validate_float],
934934
'boxplot.flierprops.linestyle': ['none', six.text_type],
935935
'boxplot.flierprops.linewidth': [1.0, validate_float],
936936

937-
'boxplot.boxprops.color': ['C0', validate_color],
937+
'boxplot.boxprops.color': ['k', validate_color],
938938
'boxplot.boxprops.linewidth': [1.0, validate_float],
939939
'boxplot.boxprops.linestyle': ['-', six.text_type],
940940

941-
'boxplot.whiskerprops.color': ['C0', validate_color],
941+
'boxplot.whiskerprops.color': ['k', validate_color],
942942
'boxplot.whiskerprops.linewidth': [1.0, validate_float],
943-
'boxplot.whiskerprops.linestyle': ['--', six.text_type],
943+
'boxplot.whiskerprops.linestyle': ['-', six.text_type],
944944

945945
'boxplot.capprops.color': ['k', validate_color],
946946
'boxplot.capprops.linewidth': [1.0, validate_float],
@@ -950,9 +950,13 @@ def validate_hist_bins(s):
950950
'boxplot.medianprops.linewidth': [1.0, validate_float],
951951
'boxplot.medianprops.linestyle': ['-', six.text_type],
952952

953-
'boxplot.meanprops.color': ['C3', validate_color],
953+
'boxplot.meanprops.color': ['C2', validate_color],
954+
'boxplot.meanprops.marker': ['^', six.text_type],
955+
'boxplot.meanprops.markerfacecolor': ['C2', validate_color],
956+
'boxplot.meanprops.markeredgecolor': ['C2', validate_color],
957+
'boxplot.meanprops.markersize': [6, validate_float],
958+
'boxplot.meanprops.linestyle': ['--', six.text_type],
954959
'boxplot.meanprops.linewidth': [1.0, validate_float],
955-
'boxplot.meanprops.linestyle': ['-', six.text_type],
956960

957961
## font props
958962
'font.family': [['sans-serif'], validate_stringlist], # used by text object
Binary file not shown.
Loading

0 commit comments

Comments
 (0)