Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a4cc0fc

Browse files
authored
Merge pull request #19089 from jklymak/enh-pass-scale-to-scale
ENH: allow passing a scale instance to set_scale
2 parents 593033a + a66c671 commit a4cc0fc

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

lib/matplotlib/axes/_base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3510,7 +3510,7 @@ def set_xscale(self, value, **kwargs):
35103510
35113511
Parameters
35123512
----------
3513-
value : {"linear", "log", "symlog", "logit", ...}
3513+
value : {"linear", "log", "symlog", "logit", ...} or `.ScaleBase`
35143514
The axis scale type to apply.
35153515
35163516
**kwargs
@@ -3836,7 +3836,7 @@ def set_yscale(self, value, **kwargs):
38363836
38373837
Parameters
38383838
----------
3839-
value : {"linear", "log", "symlog", "logit", ...}
3839+
value : {"linear", "log", "symlog", "logit", ...} or `.ScaleBase`
38403840
The axis scale type to apply.
38413841
38423842
**kwargs

lib/matplotlib/axis.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,10 @@ def get_scale(self):
741741
return self._scale.name
742742

743743
def _set_scale(self, value, **kwargs):
744-
self._scale = mscale.scale_factory(value, self, **kwargs)
744+
if not isinstance(value, mscale.ScaleBase):
745+
self._scale = mscale.scale_factory(value, self, **kwargs)
746+
else:
747+
self._scale = value
745748
self._scale.set_default_locators_and_formatters(self)
746749

747750
self.isDefault_majloc = True

lib/matplotlib/tests/test_scale.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from matplotlib.scale import (
33
LogTransform, InvertedLogTransform,
44
SymmetricalLogTransform)
5+
import matplotlib.scale as mscale
56
from matplotlib.testing.decorators import check_figures_equal, image_comparison
67

78
import numpy as np
@@ -198,3 +199,14 @@ def forward(x):
198199
ax.plot(x, x)
199200
ax.set_xscale('function', functions=(forward, inverse))
200201
ax.set_xlim(1, 1000)
202+
203+
204+
def test_pass_scale():
205+
# test passing a scale object works...
206+
fig, ax = plt.subplots()
207+
scale = mscale.LogScale(axis=None)
208+
ax.set_xscale(scale)
209+
scale = mscale.LogScale(axis=None)
210+
ax.set_yscale(scale)
211+
assert ax.xaxis.get_scale() == 'log'
212+
assert ax.yaxis.get_scale() == 'log'

0 commit comments

Comments
 (0)