Skip to content

Commit 6c88dd9

Browse files
committed
Add translation from internal kw to ones in tick_params()
1 parent 249f2ca commit 6c88dd9

File tree

3 files changed

+47
-21
lines changed

3 files changed

+47
-21
lines changed

lib/matplotlib/axes/_base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3327,7 +3327,7 @@ def tick_params(self, axis='both', **kwargs):
33273327
33283328
Tick properties that are not explicitly set using the keyword
33293329
arguments remain unchanged unless *reset* is True. For the current
3330-
style defaults, see :meth:`matplotlib.axis.Axis.get_tick_params`.
3330+
style defaults, see `.Axis.get_tick_params`.
33313331
33323332
Parameters
33333333
----------

lib/matplotlib/axis.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -943,7 +943,7 @@ def set_tick_params(self, which='major', reset=False, **kwargs):
943943
944944
See Also
945945
--------
946-
:meth:`.Axis.get_tick_params`
946+
.Axis.get_tick_params
947947
View the current style defaults for ticks, ticklabels, and
948948
gridlines.
949949
"""
@@ -988,6 +988,10 @@ def get_tick_params(self, which='major'):
988988
which : {'major', 'minor'}, default: 'major'
989989
The group of ticks to which the parameters are applied.
990990
991+
Returns
992+
-------
993+
dict on properties that deviate from the default
994+
991995
Notes
992996
-----
993997
This method returns the default values for styling *new* elements
@@ -998,11 +1002,13 @@ def get_tick_params(self, which='major'):
9981002
"""
9991003
_api.check_in_list(['major', 'minor'], which=which)
10001004
if which == 'major':
1001-
return self._major_tick_kw
1002-
return self._minor_tick_kw
1005+
return self._translate_tick_params(
1006+
self._major_tick_kw, reverse=True
1007+
)
1008+
return self._translate_tick_params(self._minor_tick_kw, reverse=True)
10031009

10041010
@staticmethod
1005-
def _translate_tick_params(kw):
1011+
def _translate_tick_params(kw, reverse=False):
10061012
"""
10071013
Translate the kwargs supported by `.Axis.set_tick_params` to kwargs
10081014
supported by `.Tick._apply_params`.
@@ -1013,9 +1019,12 @@ def _translate_tick_params(kw):
10131019
10141020
Returns a new dict of translated kwargs.
10151021
1016-
Note: The input *kwargs* are currently modified, but that's ok for
1017-
the only caller.
1022+
Note: Use reverse=True to translate from those supported by
1023+
`.Tick._apply_params` back to those supported by
1024+
`.Axis.set_tick_params`.
10181025
"""
1026+
kw_ = {**kw}
1027+
10191028
# The following lists may be moved to a more accessible location.
10201029
allowed_keys = [
10211030
'size', 'width', 'color', 'tickdir', 'pad',
@@ -1040,19 +1049,27 @@ def _translate_tick_params(kw):
10401049
'labelright': 'label2On',
10411050
'labeltop': 'label2On',
10421051
}
1043-
kwtrans = {newkey: kw.pop(oldkey)
1044-
for oldkey, newkey in keymap.items() if oldkey in kw}
1045-
if 'colors' in kw:
1046-
c = kw.pop('colors')
1052+
if reverse:
1053+
kwtrans = {
1054+
oldkey: kw_.pop(newkey)
1055+
for oldkey, newkey in keymap.items() if newkey in kw_
1056+
}
1057+
else:
1058+
kwtrans = {
1059+
newkey: kw_.pop(oldkey)
1060+
for oldkey, newkey in keymap.items() if oldkey in kw_
1061+
}
1062+
if 'colors' in kw_:
1063+
c = kw_.pop('colors')
10471064
kwtrans['color'] = c
10481065
kwtrans['labelcolor'] = c
10491066
# Maybe move the checking up to the caller of this method.
1050-
for key in kw:
1067+
for key in kw_:
10511068
if key not in allowed_keys:
10521069
raise ValueError(
10531070
"keyword %s is not recognized; valid keywords are %s"
10541071
% (key, allowed_keys))
1055-
kwtrans.update(kw)
1072+
kwtrans.update(kw_)
10561073
return kwtrans
10571074

10581075
def set_clip_path(self, clippath, transform=None):

lib/matplotlib/tests/test_axes.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6379,19 +6379,28 @@ def test_tick_apply_tickdir_deprecation():
63796379

63806380
def test_axis_get_tick_params():
63816381
axis = plt.subplot().yaxis
6382-
initial_major_style = {**axis.get_tick_params(which='major')}
6383-
initial_minor_style = {**axis.get_tick_params(which='minor')}
6382+
initial_major_style_translated = {**axis.get_tick_params(which='major')}
6383+
initial_minor_style_translated = {**axis.get_tick_params(which='minor')}
63846384

6385-
assert axis._major_tick_kw == initial_major_style
6386-
assert axis._minor_tick_kw == initial_minor_style
6385+
translated_major_kw = axis._translate_tick_params(
6386+
axis._major_tick_kw, reverse=True
6387+
)
6388+
translated_minor_kw = axis._translate_tick_params(
6389+
axis._minor_tick_kw, reverse=True
6390+
)
6391+
6392+
assert translated_major_kw == initial_major_style_translated
6393+
assert translated_minor_kw == initial_minor_style_translated
63876394
axis.set_tick_params(labelsize=30, labelcolor='red',
63886395
direction='out', which='both')
63896396

6390-
new_major_style = {**axis.get_tick_params(which='major')}
6391-
new_minor_style = {**axis.get_tick_params(which='minor')}
6392-
assert initial_major_style != new_major_style
6397+
new_major_style_translated = {**axis.get_tick_params(which='major')}
6398+
new_minor_style_translated = {**axis.get_tick_params(which='minor')}
6399+
new_major_style = axis._translate_tick_params(new_major_style_translated)
6400+
new_minor_style = axis._translate_tick_params(new_minor_style_translated)
6401+
assert initial_major_style_translated != new_major_style_translated
63936402
assert axis._major_tick_kw == new_major_style
6394-
assert initial_minor_style != new_minor_style
6403+
assert initial_minor_style_translated != new_minor_style_translated
63956404
assert axis._minor_tick_kw == new_minor_style
63966405

63976406

0 commit comments

Comments
 (0)