8000 axes.locator_params fails with LogLocator (and most Locator subclasses) · Issue #3658 · matplotlib/matplotlib · GitHub
[go: up one dir, main page]

Skip to content
axes.locator_params fails with LogLocator (and most Locator subclasses) #3658
Closed
@pierre-haessig

Description

@pierre-haessig

There is a "communication" issue between the axes.locator_params and the LogLocator class:

plt_scale = 'log'
#plt_scale = 'linear'

fig, (ax1) = plt.subplots(1, 1)

ax1.set(yscale=plt_scale)

# works for linear scale, not for log:
ax1.axes.locator_params('y', nbins=5)

Result:

AttributeError                            Traceback (most recent call last)
<ipython-input-74-3492af5f93c8> in <module>()
      7
      8 # works for linear scale, not for log:
----> 9 ax1.axes.locator_params('y', nbins=5)

/home/pierre/anaconda/lib/python2.7/site-packages/matplotlib/axes.pyc in locator_params(self, axis, tight, **kwargs)
   2305             self.xaxis.get_major_locator().set_params(**kwargs)
   2306         if _y:
-> 2307             self.yaxis.get_major_locator().set_params(**kwargs)
   2308         self.autoscale_view(tight=tight, scalex=_x, scaley=_y)
   2309

AttributeError: 'LogLocator' object has no attribute 'set_params'

What I get from the traceback is that locator_params method forwards the locator attributes (in my case nbins) to the actual locator object via its set_params method. And this method is missing from LogLocator. (set_params is indeed defined in MaxNLocator https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/ticker.py#L1297)

So my question is: shouldn't all Locator subclasses have a set_params method ?

(and then, my code example could raise a different error, or maybe a warning, complaining that LogLocator makes in fact no use of an nbins parameter!)

best,
Pierre

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0