Hi Alex,

Excellent, thanks! Using ipython is a solution that works for us.

Cheers,

Bruno

On Fri, 24 Feb 2017 at 10:54 Goodman, Alexander (398K) <
[email protected]> wrote:

> Hi Bruno,
>
> This is a known issue with matplotlib that's probably out of our control.
> Essentially, figure drawing callbacks are handled differently depending on
> whether or not your shell environment is ipython. I have described the
> issue in more detail here:
>
> https://issues.apache.org/jira/browse/ZEPPELIN-1904
>
> In my post I also gave a workaround, which is setting your
> zeppelin.pyspark.python property value to ipython instead of python in your
> interpreter settings. All of this of course assumes you have ipython. Let
> me know if this helps.
>
> Thanks,
> Alex
>
> On Fri, Feb 24, 2017 at 2:14 AM, Bruno Aranda <[email protected]> wrote:
>
> Hi,
>
> I am trying to use matplotlib to render some plots using the plot_date
> function in PySpark, where the X axis are datetimes. With a sample code
> like this one:
>
> //////
>
> %pyspark
>
> import matplotlib.pyplot as plt
> import matplotlib.dates as mdates
> import pandas as pd
> import numpy as np
>
> sx = pd.Series(np.random.randn(5))
> sy = pd.Series(['1487930047000', '1487930048000', '1487930049000',
> '1487930050000', '1487930051000'])
>
> df = DataFrame({"value": sx, "time": sy})
>
> # df = sqlContext.table("clipinParams").toPandas()
> df['time'] = pd.to_datetime(df['time'],unit='ms')
>
> plt.plot_date(df['time'], df['value'])
> plt.show()
> plt.close()
>
> //////
>
> However, it seems to fail every other run and we cannot get why. The
> exception is the following:
>
> //////
>
> Traceback (most recent call last):
> File "/tmp/zeppelin_pyspark-6333777839230958463.py", line 346, in <module>
> raise Exception(traceback.format_exc())
> Exception: Traceback (most recent call last):
> File "/tmp/zeppelin_pyspark-6333777839230958463.py", line 334, in <module>
> exec(code)
> File "<stdin>", line 9, in <module>
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/pyplot.py", line
> 3341, in plot_date
> data=data, **kwargs)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/__init__.py",
> line 1892, in inner
> return func(ax, *args, **kwargs)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axes/_axes.py",
> line 1480, in plot_date
> self.xaxis_date(tz)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axes/_base.py",
> line 3315, in xaxis_date
> self.xaxis.axis_date(tz)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axis.py", line
> 1674, in axis_date
> self.update_units(datetime.datetime(2009, 1, 1, 0, 0, 0, 0, tz))
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axis.py", line
> 1424, in update_units
> self._update_axisinfo()
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axis.py", line
> 1442, in _update_axisinfo
> self.set_major_locator(info.majloc)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axis.py", line
> 1543, in set_major_locator
> self.stale = True
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/artist.py", line
> 279, in stale
> self.stale_callback(self, val)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/artist.py", line
> 76, in _stale_axes_callback
> self.axes.stale = val
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/artist.py", line
> 279, in stale
> self.stale_callback(self, val)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/figure.py", line
> 56, in _stale_figure_callback
> self.figure.stale = val
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/artist.py", line
> 279, in stale
> self.stale_callback(self, val)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/pyplot.py", line
> 576, in _auto_draw_if_interactive
> fig.canvas.draw_idle()
> File "/usr/lib/zeppelin/interpreter/lib/python/backend_zinline.py", line
> 132, in draw_idle
> self.draw(*args, **kwargs)
> File
> "/usr/local/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py",
> line 464, in draw
> self.figure.draw(self.renderer)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/artist.py", line
> 63, in draw_wrapper
> draw(artist, renderer, *args, **kwargs)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/figure.py", line
> 1143, in draw
> renderer, self, dsu, self.suppressComposite)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/image.py", line
> 139, in _draw_list_compositing_images
> a.draw(renderer)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/artist.py", line
> 63, in draw_wrapper
> draw(artist, renderer, *args, **kwargs)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axes/_base.py",
> line 2409, in draw
> mimage._draw_list_compositing_images(renderer, self, dsu)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/image.py", line
> 139, in _draw_list_compositing_images
> a.draw(renderer)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/artist.py", line
> 63, in draw_wrapper
> draw(artist, renderer, *args, **kwargs)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axis.py", line
> 1136, in draw
> ticks_to_draw = self._update_ticks(renderer)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axis.py", line
> 969, in _update_ticks
> tick_tups = [t for t in self.iter_ticks()]
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/axis.py", line
> 912, in iter_ticks
> majorLocs = self.major.locator()
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/dates.py", line
> 983, in __call__
> self.refresh()
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/dates.py", line
> 1003, in refresh
> dmin, dmax = self.viewlim_to_dt()
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/dates.py", line
> 760, in viewlim_to_dt
> return num2date(vmin, self.tz), num2date(vmax, self.tz)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/dates.py", line
> 401, in num2date
> return _from_ordinalf(x, tz)
> File "/usr/local/lib64/python2.7/site-packages/matplotlib/dates.py", line
> 254, in _from_ordinalf
> dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
> ValueError: ordinal must be >= 1
>
> //////
>
> Any ideas of things we can look at?
>
> Cheers,
>
> Bruno
>
>
>
>
> --
> Alex Goodman
> Data Scientist I
> Science Data Modeling and Computing (398K)
> Jet Propulsion Laboratory
> California Institute of Technology
> Tel: +1-818-354-6012
>

Reply via email to