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

Skip to content

ScalarFormatter throws math domain errors with polar curvilinear grid examples #4761

Closed
@benjaminsteele

Description

@benjaminsteele

Curvelinear grids sometimes create axes that contain only two ticks, each of equal value. In these cases, ScalarFormatter's _set_format method will throw a math domain error when it tries to calculate the logarithm of their difference.

As the default tick formatter is mpl_toolkits.axisartist.grid_finder.FormatterPrettyPrint and that formatter uses ScalarFormatter, any curvelinear graph that doesn't specify an alternative formatter has the potential to run into this issue. This includes all polar curvelinear examples.

demo_floating_axis.py throws the error if the plot is panned to create condition noted above, or if line 58 is changed to ax1.set_ylim(-5, 5)

Traceback (most recent call last):
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\backends\backend_qt5.py", line 338, in resizeEvent
    self.draw()
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 148, in draw
    FigureCanvasAgg.draw(self)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\backends\backend_agg.py", line 469, in draw
    self.figure.draw(self.renderer)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\figure.py", line 1085, in draw
    func(*args)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\mpl_toolkits\axes_grid1\parasite_axes.py", line 295, in draw
    self._get_base_axes_attr("draw")(self, renderer)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\mpl_toolkits\axisartist\axislines.py", line 778, in draw
    super(Axes, self).draw(renderer, inframe)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\artist.py", line 59, in draw_wrapper
    draw(artist, renderer, *args, **kwargs)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\axes\_base.py", line 2110, in draw
    a.draw(renderer)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\mpl_toolkits\axisartist\axis_artist.py", line 914, in draw
    self._grid_helper.update_lim(self.axes)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\mpl_toolkits\axisartist\axislines.py", line 428, in update_lim
    self._update(x1, x2, y1, y2)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\mpl_toolkits\axisartist\grid_helper_curvelinear.py", line 376, in _update
    self._update_grid(x1, y1, x2, y2)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\mpl_toolkits\axisartist\grid_helper_curvelinear.py", line 439, in _update_grid
    self.grid_info = self.grid_finder.get_grid_info(x1, y1, x2, y2)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\mpl_toolkits\axisartist\grid_finder.py", line 136, in get_grid_info
    lat_factor, levs)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\mpl_toolkits\axisartist\grid_finder.py", line 317, in __call__
    self._fmt.set_locs(values)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\ticker.py", line 523, in set_locs
    self._set_format(vmin, vmax)
  File "C:\ProgramData\WinPython-64bit-2.7.10.1\python-2.7.10.amd64\lib\site-packages\matplotlib\ticker.py", line 584, in _set_format
    loc_range_oom = int(math.floor(math.log10(loc_range)))
ValueError: math domain error

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions