@@ -855,7 +855,7 @@ def set_tick_params(self, which='major', reset=False, **kwargs):
855
855
:meth:`matplotlib.axes.Axes.tick_params`.
856
856
"""
857
857
_api .check_in_list (['major' , 'minor' , 'both' ], which = which )
858
- kwtrans = self ._translate_tick_kw (kwargs )
858
+ kwtrans = self ._translate_tick_params (kwargs )
859
859
860
860
# the kwargs are stored in self._major/minor_tick_kw so that any
861
861
# future new ticks will automatically get them
@@ -887,47 +887,56 @@ def set_tick_params(self, which='major', reset=False, **kwargs):
887
887
self .stale = True
888
888
889
889
@staticmethod
890
- def _translate_tick_kw (kw ):
890
+ def _translate_tick_params (kw ):
891
+ """
892
+ Translate the kwargs supported by `.Axis.set_tick_params` to kwargs
893
+ supported by `.Tick._apply_params`.
894
+
895
+ In particular, this maps axis specific names like 'top', 'left'
896
+ to the generic tick1, tick2 logic of the axis. Additionally, there
897
+ are some other name translations.
898
+
899
+ Returns a new dict of translated kwargs.
900
+
901
+ Note: The input *kwargs* are currently modified, but that's ok for
902
+ the only caller.
903
+ """
891
904
# The following lists may be moved to a more accessible location.
892
- kwkeys = ['size' , 'width' , 'color' , 'tickdir' , 'pad' ,
893
- 'labelsize' , 'labelcolor' , 'zorder' , 'gridOn' ,
894
- 'tick1On' , 'tick2On' , 'label1On' , 'label2On' ,
895
- 'length' , 'direction' , 'left' , 'bottom' , 'right' , 'top' ,
896
- 'labelleft' , 'labelbottom' , 'labelright' , 'labeltop' ,
897
- 'labelrotation' ] + _gridline_param_names
898
- kwtrans = {}
899
- if 'length' in kw :
900
- kwtrans ['size' ] = kw .pop ('length' )
901
- if 'direction' in kw :
902
- kwtrans ['tickdir' ] = kw .pop ('direction' )
903
- if 'rotation' in kw :
904
- kwtrans ['labelrotation' ] = kw .pop ('rotation' )
905
- if 'left' in kw :
906
- kwtrans ['tick1On' ] = kw .pop ('left' )
907
- if 'bottom' in kw :
908
- kwtrans ['tick1On' ] = kw .pop ('bottom' )
909
- if 'right' in kw :
910
- kwtrans ['tick2On' ] = kw .pop ('right' )
911
- if 'top' in kw :
912
- kwtrans ['tick2On' ] = kw .pop ('top' )
913
- if 'labelleft' in kw :
914
- kwtrans ['label1On' ] = kw .pop ('labelleft' )
915
- if 'labelbottom' in kw :
916
- kwtrans ['label1On' ] = kw .pop ('labelbottom' )
917
- if 'labelright' in kw :
918
- kwtrans ['label2On' ] = kw .pop ('labelright' )
919
- if 'labeltop' in kw :
920
- kwtrans ['label2On' ] = kw .pop ('labeltop' )
905
+ allowed_keys = [
906
+ 'size' , 'width' , 'color' , 'tickdir' , 'pad' ,
907
+ 'labelsize' , 'labelcolor' , 'zorder' , 'gridOn' ,
908
+ 'tick1On' , 'tick2On' , 'label1On' , 'label2On' ,
909
+ 'length' , 'direction' , 'left' , 'bottom' , 'right' , 'top' ,
910
+ 'labelleft' , 'labelbottom' , 'labelright' , 'labeltop' ,
911
+ 'labelrotation' ,
912
+ * _gridline_param_names ]
913
+
914
+ keymap = {
915
+ # tick_params key -> axis key
916
+ 'length' : 'size' ,
917
+ 'direction' : 'tickdir' ,
918
+ 'rotation' : 'labelrotation' ,
919
+ 'left' : 'tick1On' ,
920
+ 'bottom' : 'tick1On' ,
921
+ 'right' : 'tick2On' ,
922
+ 'top' : 'tick2On' ,
923
+ 'labelleft' : 'label1On' ,
924
+ 'labelbottom' : 'label1On' ,
925
+ 'labelright' : 'label2On' ,
926
+ 'labeltop' : 'label2On' ,
927
+ }
928
+ kwtrans = {newkey : kw .pop (oldkey )
929
+ for oldkey , newkey in keymap .items () if oldkey in kw }
921
930
if 'colors' in kw :
922
931
c = kw .pop ('colors' )
923
932
kwtrans ['color' ] = c
924
933
kwtrans ['labelcolor' ] = c
925
934
# Maybe move the checking up to the caller of this method.
926
935
for key in kw :
927
- if key not in kwkeys :
936
+ if key not in allowed_keys :
928
937
raise ValueError (
929
938
"keyword %s is not recognized; valid keywords are %s"
930
- % (key , kwkeys ))
939
+ % (key , allowed_keys ))
931
940
kwtrans .update (kw )
932
941
return kwtrans
933
942
0 commit comments