@@ -992,21 +992,38 @@ def test_TextBox(ax, toolbar):
992
992
@image_comparison (['check_radio_buttons.png' ], style = 'mpl20' , remove_text = True )
993
993
def test_check_radio_buttons_image ():
994
994
ax = get_ax ()
995
- # Remove this line when this test image is regenerated.
996
- plt . rcParams [ 'text.kerning_factor' ] = 6
995
+ fig = ax . figure
996
+ fig . subplots_adjust ( left = 0.3 )
997
997
998
- plt .subplots_adjust (left = 0.3 )
999
- rax1 = plt .axes ([0.05 , 0.7 , 0.15 , 0.15 ])
1000
- rax2 = plt .axes ([0.05 , 0.2 , 0.15 , 0.15 ])
1001
- rb = widgets .RadioButtons (rax1 , ('Radio 1' , 'Radio 2' , 'Radio 3' ))
998
+ rax1 = fig .add_axes ([0.05 , 0.7 , 0.2 , 0.15 ])
999
+ rb1 = widgets .RadioButtons (rax1 , ('Radio 1' , 'Radio 2' , 'Radio 3' ))
1002
1000
with pytest .warns (DeprecationWarning ,
1003
1001
match = 'The circles attribute was deprecated' ):
1004
- rb .circles # Trigger the old-style elliptic radiobuttons.
1005
- cb = widgets .CheckButtons (rax2 , ('Check 1' , 'Check 2' , 'Check 3' ),
1006
- (False , True , True ))
1002
+ rb1 .circles # Trigger the old-style elliptic radiobuttons.
1003
+
1004
+ rax2 = fig .add_axes ([0.05 , 0.5 , 0.2 , 0.15 ])
1005
+ cb1 = widgets .CheckButtons (rax2 , ('Check 1' , 'Check 2' , 'Check 3' ),
1006
+ (False , True , True ))
1007
1007
with pytest .warns (DeprecationWarning ,
1008
1008
match = 'The rectangles attribute was deprecated' ):
1009
- cb .rectangles # Trigger old-style Rectangle check boxes
1009
+ cb1 .rectangles # Trigger old-style Rectangle check boxes
1010
+
1011
+ rax3 = fig .add_axes ([0.05 , 0.3 , 0.2 , 0.15 ])
1012
+ rb3 = widgets .RadioButtons (
1013
+ rax3 , ('Radio 1' , 'Radio 2' , 'Radio 3' ),
1014
+ label_props = {'fontsize' : [8 , 12 , 16 ],
1015
+ 'color' : ['red' , 'green' , 'blue' ]},
1016
+ radio_props = {'edgecolor' : ['red' , 'green' , 'blue' ],
1017
+ 'facecolor' : ['mistyrose' , 'palegreen' , 'lightblue' ]})
1018
+
1019
+ rax4 = fig .add_axes ([0.05 , 0.1 , 0.2 , 0.15 ])
1020
+ cb4 = widgets .CheckButtons (
1021
+ rax4 , ('Check 1' , 'Check 2' , 'Check 3' ), (False , True , True ),
1022
+ label_props = {'fontsize' : [8 , 12 , 16 ],
1023
+ 'color' : ['red' , 'green' , 'blue' ]},
1024
+ frame_props = {'edgecolor' : ['red' , 'green' , 'blue' ],
1025
+ 'facecolor' : ['mistyrose' , 'palegreen' , 'lightblue' ]},
1026
+ check_props = {'color' : ['red' , 'green' , 'blue' ]})
1010
1027
1011
1028
1012
1029
@check_figures_equal (extensions = ["png" ])
@@ -1019,6 +1036,41 @@ def test_radio_buttons(fig_test, fig_ref):
1019
1036
ax .text (.25 , 1 / 3 , "coffee" , transform = ax .transAxes , va = "center" )
1020
1037
1021
1038
1039
+ @check_figures_equal (extensions = ['png' ])
1040
+ def test_radio_buttons_props (fig_test , fig_ref ):
1041
+ label_props = {'color' : ['red' ], 'fontsize' : [24 ]}
1042
+ radio_props = {'facecolor' : 'green' , 'edgecolor' : 'blue' , 'linewidth' : 2 }
1043
+
1044
+ widgets .RadioButtons (fig_ref .subplots (), ['tea' , 'coffee' ],
1045
+ label_props = label_props , radio_props = radio_props )
1046
+
1047
+ cb = widgets .RadioButtons (fig_test .subplots (), ['tea' , 'coffee' ])
1048
+ cb .set_label_props (label_props )
1049
+ # Setting the label size automatically increases default marker size, so we
1050
+ # need to do that here as well.
1051
+ cb .set_radio_props ({** radio_props , 's' : (24 / 2 )** 2 })
1052
+
1053
+
1054
+ def test_radio_button_active_conflict (ax ):
1055
+ with pytest .warns (UserWarning ,
1056
+ match = r'Both the \*activecolor\* parameter' ):
1057
+ rb = widgets .RadioButtons (ax , ['tea' , 'coffee' ], activecolor = 'red' ,
1058
+ radio_props = {'facecolor' : 'green' })
1059
+ # *radio_props*' facecolor wins over *activecolor*
1060
+ assert mcolors .same_color (rb ._buttons .get_facecolor (), ['green' , 'none' ])
1061
+
1062
+
1063
+ @check_figures_equal (extensions = ['png' ])
1064
+ def test_radio_buttons_activecolor_change (fig_test , fig_ref ):
1065
+ widgets .RadioButtons (fig_ref .subplots (), ['tea' , 'coffee' ],
1066
+ activecolor = 'green' )
1067
+
1068
+ # Test property setter.
1069
+ cb = widgets .RadioButtons (fig_test .subplots (), ['tea' , 'coffee' ],
1070
+ activecolor = 'red' )
1071
+ cb .activecolor = 'green'
1072
+
1073
+
1022
1074
@check_figures_equal (extensions = ["png" ])
1023
1075
def test_check_buttons (fig_test , fig_ref ):
1024
1076
widgets .CheckButtons (fig_test .subplots (), ["tea" , "coffee" ], [True , True ])
@@ -1031,6 +1083,29 @@ def test_check_buttons(fig_test, fig_ref):
1031
1083
ax .text (.25 , 1 / 3 , "coffee" , transform = ax .transAxes , va = "center" )
1032
1084
1033
1085
1086
+ @check_figures_equal (extensions = ['png' ])
1087
+ def test_check_button_props (fig_test , fig_ref ):
1088
+ label_props = {'color' : ['red' ], 'fontsize' : [24 ]}
1089
+ frame_props = {'facecolor' : 'green' , 'edgecolor' : 'blue' , 'linewidth' : 2 }
1090
+ check_props = {'facecolor' : 'red' , 'linewidth' : 2 }
1091
+
1092
+ widgets .CheckButtons (fig_ref .subplots (), ['tea' , 'coffee' ], [True , True ],
1093
+ label_props = label_props , frame_props = frame_props ,
1094
+ check_props = check_props )
1095
+
1096
+ cb = widgets .CheckButtons (fig_test .subplots (), ['tea' , 'coffee' ],
1097
+ [True , True ])
1098
+ cb .set_label_props (label_props )
1099
+ # Setting the label size automatically increases default marker size, so we
1100
+ # need to do that here as well.
1101
+ cb .set_frame_props ({** frame_props , 's' : (24 / 2 )** 2 })
1102
+ # FIXME: Axes.scatter promotes facecolor to edgecolor on unfilled markers,
1103
+ # but Collection.update doesn't do that (it forgot the marker already).
1104
+ # This means we cannot pass facecolor to both setters directly.
1105
+ check_props ['edgecolor' ] = check_props .pop ('facecolor' )
1106
+ cb .set_check_props ({** check_props , 's' : (24 / 2 )** 2 })
1107
+
1108
+
1034
1109
@check_figures_equal (extensions = ["png" ])
1035
1110
def test_check_buttons_rectangles (fig_test , fig_ref ):
1036
1111
# Test should be removed once .rectangles is removed
0 commit comments