From 88428eb1d2ce84f7b4b2e602a92658fa6d22a81f Mon Sep 17 00:00:00 2001 From: Minty Zhang Date: Sat, 14 Mar 2015 11:42:05 -0400 Subject: [PATCH] Add rcParams to enable minor ticks: could use `rcParams['xtick.minor.visible'] = True` to enable automatic minor ticks on x axis; update tests_axes; update documentation on whats_new/rcParams. Refer to issue @3024 for details. --- doc/users/whats_new/rcparams.rst | 6 ++++++ lib/matplotlib/axes/_base.py | 7 +++++++ lib/matplotlib/rcsetup.py | 4 ++++ .../test_axes/minorticks_on_rcParams_both.png | Bin 0 -> 20863 bytes lib/matplotlib/tests/test_axes.py | 11 +++++++++++ 5 files changed, 28 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/minorticks_on_rcParams_both.png diff --git a/doc/users/whats_new/rcparams.rst b/doc/users/whats_new/rcparams.rst index 7111a6e6c215..4e7d367c46cb 100644 --- a/doc/users/whats_new/rcparams.rst +++ b/doc/users/whats_new/rcparams.rst @@ -1,3 +1,9 @@ +Added ``xtick.minor.visible`` and ``ytick.minor.visible`` key to rcParams +````````````````````````````````````````````````````````````````````````` +Two new keys to control the minor ticks on x/y axis respectively, default set to ``False`` (no minor ticks on the axis). + +When ``True``, the minor ticks are shown and located via a ``mticker.AutoMinorLocator()``. + Added "legend.framealpha" key to rcParams ````````````````````````````````````````` Added a key and the corresponding logic to control the default transparency of diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index e7b9696947c9..4765e76a54a5 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -881,6 +881,13 @@ def cla(self): else: self.yaxis._set_scale('linear') + # update the minor locator for x and y axis based on rcParams + if (rcParams['xtick.minor.visible']): + self.xaxis.set_minor_locator(mticker.AutoMinorLocator()) + + if (rcParams['ytick.minor.visible']): + self.yaxis.set_minor_locator(mticker.AutoMinorLocator()) + self._autoscaleXon = True self._autoscaleYon = True self._xmargin = rcParams['axes.xmargin'] diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index b25788da001e..2c24ad25b2e0 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -694,6 +694,8 @@ def __call__(self, s): 'xtick.major.pad': [4, validate_float], # distance to label in points 'xtick.minor.pad': [4, validate_float], # distance to label in points 'xtick.color': ['k', validate_color], # color of the xtick labels + 'xtick.minor.visible': [False, validate_bool], # visiablility of the x axis minor ticks + # fontsize of the xtick labels 'xtick.labelsize': ['medium', validate_fontsize], 'xtick.direction': ['in', six.text_type], # direction of xticks @@ -705,6 +707,8 @@ def __call__(self, s): 'ytick.major.pad': [4, validate_float], # distance to label in points 'ytick.minor.pad': [4, validate_float], # distance to label in points 'ytick.color': ['k', validate_color], # color of the ytick labels + 'ytick.minor.visible': [False, validate_bool], # visiablility of the y axis minor ticks + # fontsize of the ytick labels 'ytick.labelsize': ['medium', validate_fontsize], 'ytick.direction': ['in', six.text_type], # direction of yticks diff --git a/lib/matplotlib/tests/baseline_images/test_axes/minorticks_on_rcParams_both.png b/lib/matplotlib/tests/baseline_images/test_axes/minorticks_on_rcParams_both.png new file mode 100644 index 0000000000000000000000000000000000000000..42fc1debbd129ea75956f2bc634b0e95fd69bfb7 GIT binary patch literal 20863 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