You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@zeppelin.apache.org by Wush Wu <wu...@bridgewell.com> on 2015/06/10 04:07:18 UTC
matplotlib in pyspark
Dear all,
I am trying the materials of an online spark course in edX (
https://www.edx.org/course/introduction-big-data-apache-spark-uc-berkeleyx-cs100-1x).
They use the ipython notebook to teach, and I want to test if zeppelin is
as good as ipython notebook when using pyspark.
However, the matplotlib does not work so far. The script and error message
are:
```
%pyspark
# Check matplotlib plotting
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from math import log
# function for generating plot layout
def preparePlot(xticks, yticks, figsize=(10.5, 6), hideLabels=False,
gridColor='#999999', gridWidth=1.0):
plt.close()
fig, ax = plt.subplots(figsize=figsize, facecolor='white',
edgecolor='white')
ax.axes.tick_params(labelcolor='#999999', labelsize='10')
for axis, ticks in [(ax.get_xaxis(), xticks), (ax.get_yaxis(), yticks)]:
axis.set_ticks_position('none')
axis.set_ticks(ticks)
axis.label.set_color('#999999')
if hideLabels: axis.set_ticklabels([])
plt.grid(color=gridColor, linewidth=gridWidth, linestyle='-')
map(lambda position: ax.spines[position].set_visible(False), ['bottom',
'top', 'left', 'right'])
return fig, ax
# generate layout and plot data
x = range(1, 50)
y = [log(x1 ** 2) for x1 in x]
fig, ax = preparePlot(range(5, 60, 10), range(0, 12, 1))
plt.scatter(x, y, s=14**2, c='#d6ebf2', edgecolors='#8cbfd0', alpha=0.75)
ax.set_xlabel(r'$range(1, 50)$'), ax.set_ylabel(r'$\log_e(x^2)$')
pass
```
(<class '_tkinter.TclError'>, TclError('no display name and no $DISPLAY
environment variable',), <traceback object at 0x7fce51a925f0>)
Is there any work around to use matplotlib in zeppelin so far? Or should I
open an issue?
Best,
Wush
Re: matplotlib in pyspark
Posted by Wush Wu <wu...@bridgewell.com>.
Dear moon,
Thanks! It works.
Wush
2015-06-10 21:22 GMT+08:00 moon soo Lee <mo...@apache.org>:
> Hi,
>
> I could make matplotlib work in Zeppelin with helper function
>
> %pyspark
> import matplotlib.pyplot as plt
> import StringIO
> def show(p):
> img = StringIO.StringIO()
> p.savefig(img, format='svg')
> img.seek(0)
> print "%html <div style='width:600px'>" + img.buf + "</div>"
>
> Then it displays plot, like
> %pyspark
> show(plt)
>
> attaching a screenshot
>
>
> Thanks,
> moon
>
> On Tue, Jun 9, 2015 at 7:08 PM Wush Wu <wu...@bridgewell.com> wrote:
>
>> Dear all,
>>
>> I am trying the materials of an online spark course in edX (
>> https://www.edx.org/course/introduction-big-data-apache-spark-uc-berkeleyx-cs100-1x).
>> They use the ipython notebook to teach, and I want to test if zeppelin is
>> as good as ipython notebook when using pyspark.
>>
>> However, the matplotlib does not work so far. The script and error
>> message are:
>>
>> ```
>> %pyspark
>> # Check matplotlib plotting
>> import matplotlib.pyplot as plt
>> import matplotlib.cm as cm
>> from math import log
>>
>> # function for generating plot layout
>> def preparePlot(xticks, yticks, figsize=(10.5, 6), hideLabels=False,
>> gridColor='#999999', gridWidth=1.0):
>> plt.close()
>> fig, ax = plt.subplots(figsize=figsize, facecolor='white',
>> edgecolor='white')
>> ax.axes.tick_params(labelcolor='#999999', labelsize='10')
>> for axis, ticks in [(ax.get_xaxis(), xticks), (ax.get_yaxis(),
>> yticks)]:
>> axis.set_ticks_position('none')
>> axis.set_ticks(ticks)
>> axis.label.set_color('#999999')
>> if hideLabels: axis.set_ticklabels([])
>> plt.grid(color=gridColor, linewidth=gridWidth, linestyle='-')
>> map(lambda position: ax.spines[position].set_visible(False),
>> ['bottom', 'top', 'left', 'right'])
>> return fig, ax
>>
>> # generate layout and plot data
>> x = range(1, 50)
>> y = [log(x1 ** 2) for x1 in x]
>> fig, ax = preparePlot(range(5, 60, 10), range(0, 12, 1))
>> plt.scatter(x, y, s=14**2, c='#d6ebf2', edgecolors='#8cbfd0', alpha=0.75)
>> ax.set_xlabel(r'$range(1, 50)$'), ax.set_ylabel(r'$\log_e(x^2)$')
>> pass
>> ```
>>
>> (<class '_tkinter.TclError'>, TclError('no display name and no $DISPLAY
>> environment variable',), <traceback object at 0x7fce51a925f0>)
>>
>> Is there any work around to use matplotlib in zeppelin so far? Or should
>> I open an issue?
>>
>> Best,
>> Wush
>>
>
Re: matplotlib in pyspark
Posted by moon soo Lee <mo...@apache.org>.
Hi,
I could make matplotlib work in Zeppelin with helper function
%pyspark
import matplotlib.pyplot as plt
import StringIO
def show(p):
img = StringIO.StringIO()
p.savefig(img, format='svg')
img.seek(0)
print "%html <div style='width:600px'>" + img.buf + "</div>"
Then it displays plot, like
%pyspark
show(plt)
attaching a screenshot
Thanks,
moon
On Tue, Jun 9, 2015 at 7:08 PM Wush Wu <wu...@bridgewell.com> wrote:
> Dear all,
>
> I am trying the materials of an online spark course in edX (
> https://www.edx.org/course/introduction-big-data-apache-spark-uc-berkeleyx-cs100-1x).
> They use the ipython notebook to teach, and I want to test if zeppelin is
> as good as ipython notebook when using pyspark.
>
> However, the matplotlib does not work so far. The script and error message
> are:
>
> ```
> %pyspark
> # Check matplotlib plotting
> import matplotlib.pyplot as plt
> import matplotlib.cm as cm
> from math import log
>
> # function for generating plot layout
> def preparePlot(xticks, yticks, figsize=(10.5, 6), hideLabels=False,
> gridColor='#999999', gridWidth=1.0):
> plt.close()
> fig, ax = plt.subplots(figsize=figsize, facecolor='white',
> edgecolor='white')
> ax.axes.tick_params(labelcolor='#999999', labelsize='10')
> for axis, ticks in [(ax.get_xaxis(), xticks), (ax.get_yaxis(),
> yticks)]:
> axis.set_ticks_position('none')
> axis.set_ticks(ticks)
> axis.label.set_color('#999999')
> if hideLabels: axis.set_ticklabels([])
> plt.grid(color=gridColor, linewidth=gridWidth, linestyle='-')
> map(lambda position: ax.spines[position].set_visible(False),
> ['bottom', 'top', 'left', 'right'])
> return fig, ax
>
> # generate layout and plot data
> x = range(1, 50)
> y = [log(x1 ** 2) for x1 in x]
> fig, ax = preparePlot(range(5, 60, 10), range(0, 12, 1))
> plt.scatter(x, y, s=14**2, c='#d6ebf2', edgecolors='#8cbfd0', alpha=0.75)
> ax.set_xlabel(r'$range(1, 50)$'), ax.set_ylabel(r'$\log_e(x^2)$')
> pass
> ```
>
> (<class '_tkinter.TclError'>, TclError('no display name and no $DISPLAY
> environment variable',), <traceback object at 0x7fce51a925f0>)
>
> Is there any work around to use matplotlib in zeppelin so far? Or should I
> open an issue?
>
> Best,
> Wush
>