Alberto Cordioli created ZEPPELIN-3457:
------------------------------------------
Summary: Matplotlib hist() function with log scale does not work
in Zeppelin
Key: ZEPPELIN-3457
URL: https://issues.apache.org/jira/browse/ZEPPELIN-3457
Project: Zeppelin
Issue Type: Bug
Components: pySpark, python-interpreter
Affects Versions: 0.7.3
Reporter: Alberto Cordioli
In Zeppelin, Python interpreter gives error when I try to plot some simple data
using matplotlib _hist()_ function *using log scale.*
For example, the following code:
{code:python}
%spark.pyspark
import matplotlib.pyplot as plt
plt.hist(x=[1,1,2,5,6,7,8], log=True)
{code}
raises the following error:
{code:bash}
Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6974052710629836805.py", line 367, in <module>
raise Exception(traceback.format_exc())
Exception: Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6974052710629836805.py", line 360, in <module>
exec(code, _zcUserQueryNameSpace)
File "<stdin>", line 2, in <module>
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/pyplot.py",
line 3081, in hist
stacked=stacked, data=data, **kwargs)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py",
line 1898, in inner
return func(ax, *args, **kwargs)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_axes.py",
line 6279, in hist
color=c, **{bottom_kwarg: bottom})
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/__init__.py",
line 1898, in inner
return func(ax, *args, **kwargs)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_axes.py",
line 2019, in bar
self.set_yscale('log', nonposy='clip')
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py",
line 3238, in set_yscale
ax.yaxis._set_scale(value, **kwargs)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axis.py", line
710, in _set_scale
self._scale.set_default_locators_and_formatters(self)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/scale.py",
line 249, in set_default_locators_and_formatters
axis.set_major_locator(LogLocator(self.base))
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axis.py", line
1543, in set_major_locator
self.stale = True
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/artist.py",
line 279, in stale
self.stale_callback(self, val)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/artist.py",
line 76, in _stale_axes_callback
self.axes.stale = val
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/artist.py",
line 279, in stale
self.stale_callback(self, val)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/figure.py",
line 56, in _stale_figure_callback
self.figure.stale = val
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/artist.py",
line 279, in stale
self.stale_callback(self, val)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/pyplot.py",
line 576, in _auto_draw_if_interactive
fig.canvas.draw_idle()
File "/opt/zeppelin-0.7.3-bin-all/interpreter/lib/python/backend_zinline.py",
line 136, in draw_idle
self.draw(*args, **kwargs)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/backends/backend_agg.py",
line 464, in draw
self.figure.draw(self.renderer)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/artist.py",
line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/figure.py",
line 1144, in draw
renderer, self, dsu, self.suppressComposite)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/image.py",
line 139, in _draw_list_compositing_images
a.draw(renderer)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/artist.py",
line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py",
line 2426, in draw
mimage._draw_list_compositing_images(renderer, self, dsu)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/image.py",
line 139, in _draw_list_compositing_images
a.draw(renderer)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/artist.py",
line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axis.py", line
1136, in draw
ticks_to_draw = self._update_ticks(renderer)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axis.py", line
969, in _update_ticks
tick_tups = [t for t in self.iter_ticks()]
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/axis.py", line
912, in iter_ticks
majorLocs = self.major.locator()
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/ticker.py",
line 1930, in __call__
return self.tick_values(vmin, vmax)
File
"/home/zeppelin/anaconda2/lib/python2.7/site-packages/matplotlib/ticker.py",
line 1956, in tick_values
"Data has no positive values, and therefore can not be "
ValueError: Data has no positive values, and therefore can not be log-scaled.
{code}
I get the very same error even if I use python interpreter, instead of pyspark.
If I remove log scale everything works fine.
I did not find any open issue related to this problem, except the following
link that might be related:
https://stackoverflow.com/questions/48440882/python-plotting-time-series-data-in-zeppelin-causes-valueerror-alternate-times
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)