Closed
Description
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