I think it has nothing to do with docker. It relates to the matploblib
settings. I don't know why, but in some other cases, I found matplotlib
will use Agg as the backend by default.

To solve your problem, just make sure you run this as the first thing when
you start your Zeppelin environment.

%python

import matplotlib
matplotlib.use('Agg')



On Sat, Sep 17, 2016 at 4:27 PM afancy <grou...@gmail.com> wrote:

> But, mine is not in docker environment.
>
> afancy
>
> On Fri, Sep 16, 2016 at 2:10 PM, afancy <grou...@gmail.com> wrote:
>
>> Hi,
>>
>> Has this problem been solved? I also encountered the same problem (see
>> the following). I build from the source pulled from the Master branch.
>>
>> /afancy
>>
>> %python plt.figure() plt.plot(x, f(x), lw=2) z.show(plt, width='500px')
>> plt.close()
>>
>> raceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 423, in
>> figure
>> **kwargs)
>> File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py",
>> line 79, in new_figure_manager
>> return new_figure_manager_given_figure(num, figure)
>> File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py",
>> line 87, in new_figure_manager_given_figure
>> window = Tk.Tk()
>> File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __init__
>> self.tk = _tkinter.create(screenName, baseName, className, interactive,
>> wantobjects, useTk, sync, use)
>> _tkinter.TclError: no display name and no $DISPLAY environment variable
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2980, in
>> plot
>> ax = gca()
>> File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 803, in gca
>> ax = gcf().gca(**kwargs)
>> File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 450, in gcf
>> return figure()
>> File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 423, in
>> figure
>> **kwargs)
>> File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py",
>> line 79, in new_figure_manager
>> return new_figure_manager_given_figure(num, figure)
>> File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py",
>> line 87, in new_figure_manager_given_figure
>> window = Tk.Tk()
>> File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __init__
>> self.tk = _tkinter.create(screenName, baseName, className, interactive,
>> wantobjects, useTk, sync, use)
>> _tkinter.TclError: no display name and no $DISPLAY environment variable
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> File "<stdin>", line 22, in show
>> File "<stdin>", line 63, in show_matplotlib
>> File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 560, in
>> savefig
>> fig = gcf()
>> File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 450, in gcf
>> return figure()
>> File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 423, in
>> figure
>> **kwargs)
>> File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py",
>> line 79, in new_figure_manager
>> return new_figure_manager_given_figure(num, figure)
>> File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py",
>> line 87, in new_figure_manager_given_figure
>> window = Tk.Tk()
>> File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __init__
>> self.tk = _tkinter.create(screenName, baseName, className, interactive,
>> wantobjects, useTk, sync, use)
>> _tkinter.TclError: no display name and no $DISPLAY environment variable
>>
>> On Thu, Sep 15, 2016 at 3:16 AM, Xi Shen <davidshe...@gmail.com> wrote:
>>
>>> I think I found the cause. I think it is font problem. In docker
>>> environment, it only has a small set of fonts installed. But I have not
>>> find out which font should I install...I will update you guys later.
>>>
>>> On Thu, Sep 15, 2016, 00:33 moon soo Lee <m...@apache.org> wrote:
>>>
>>>> Tried x = np.arange(100), x = np.linspace(-2,2,1000) with both python2
>>>> and python3 in %python interpreter. I don't have any problem.
>>>>
>>>>
>>>> On Wed, Sep 14, 2016 at 3:12 AM Xi Shen <davidshe...@gmail.com> wrote:
>>>>
>>>>> OK, for this problem, it is discussed at
>>>>> https://stackoverflow.com/questions/15538099/conversion-of-unicode-minus-sign-from-matplotlib-ticklabels
>>>>>
>>>>> However, I just tried with Jupyter notebook, and its matplotlib can
>>>>> plot with negative values on the axes correctly, and
>>>>> matplotlib.rcParams['axes.unicode_minus'] = True.
>>>>>
>>>>> Can you guys please check if this only happens to a Python3
>>>>> environment? I don't think I am the first one hit this problem.
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Sep 14, 2016 at 5:49 PM Xi Shen <davidshe...@gmail.com> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I worked it out...So I have start a new instance of
>>>>>> Zeppelin...creating a new notebook wont take effect...So all the Python
>>>>>> code are executed in one python vm? Shouldn't separating ones are better?
>>>>>>
>>>>>> After I get matplotlib work, I have a new problem.
>>>>>>
>>>>>> This code snippet works
>>>>>> %python
>>>>>>
>>>>>> import numpy as np
>>>>>> import matplotlib.pyplot as plt
>>>>>>
>>>>>> x = np.arange(100)
>>>>>>
>>>>>> plt.figure()
>>>>>> plt.plot(x, x**2)
>>>>>> z.show(plt, width='300px')
>>>>>> plt.close()
>>>>>>
>>>>>> But if I change x value to x= np.linspace(-2, 2, 1000), as it it used
>>>>>> in the example, I got
>>>>>>
>>>>>> <matplotlib.figure.Figure object at 0x7fa177d197b8>
>>>>>> [<matplotlib.lines.Line2D object at 0x7fa177ecf080>]
>>>>>>
>>>>>> Traceback (most recent call last):
>>>>>> File "<stdin>", line 1, in <module>
>>>>>> File "<stdin>", line 23, in show
>>>>>> File "<stdin>", line 69, in show_matplotlib
>>>>>> UnicodeEncodeError: 'ascii' codec can't encode character '\u2212' in
>>>>>> position 17262: ordinal not in range(128)
>>>>>>
>>>>>> I did some testing, and I found if any of the value passed to plot()
>>>>>> contains negative numbers, I will get this error...very odd.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Sep 14, 2016 at 8:50 AM Felix Cheung <
>>>>>> felixcheun...@hotmail.com> wrote:
>>>>>>
>>>>>>> And
>>>>>>> matplotlib.use('Agg')
>>>>>>>
>>>>>>> Would only work before matplotlib is first used so you would need to
>>>>>>> restart the interpreter. From error stack below it looks like something
>>>>>>> might be setting the default backend in matplotlib to TkAgg though.
>>>>>>>
>>>>>>> Are you using the Python interpreter or PySpark interpreter? Also
>>>>>>> how you are calling matplotlib like Moon asks?
>>>>>>>
>>>>>>> _____________________________
>>>>>>> From: moon soo Lee <m...@apache.org>
>>>>>>> Sent: Tuesday, September 13, 2016 2:34 PM
>>>>>>> Subject: Re: Matplotlib uses tkinter instead of Agg
>>>>>>> To: <users@zeppelin.apache.org>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Thanks for sharing the problem.
>>>>>>> Could you share which version of Zeppelin are you using and how did
>>>>>>> you try matplotlib inside of Zeppelin? Are you trying matplotlib
>>>>>>> with z.show() ?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> moon
>>>>>>>
>>>>>>> On Tue, Sep 13, 2016 at 1:56 AM Xi Shen <davidshe...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I want to build a Zeppelin docker image for my self. The docker
>>>>>>>> image is based on ubuntu:wily, and has openjdk-8-jre and python3 
>>>>>>>> installed.
>>>>>>>> I also installed other packages that I need.
>>>>>>>>
>>>>>>>> After started Zeppelin in the docker, I am able to access the
>>>>>>>> webapp from my local browser. I tried to execute some simple Python 
>>>>>>>> script,
>>>>>>>> and it works fine. But when I try to run the matplotlib example, I got
>>>>>>>> error saying that tkinter cannot find the $DISPLAY.
>>>>>>>>
>>>>>>>> Traceback (most recent call last):
>>>>>>>> File "<stdin>", line 1, in <module>
>>>>>>>> File "/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py",
>>>>>>>> line 535, in figure
>>>>>>>> **kwargs)
>>>>>>>> File
>>>>>>>> "/usr/local/lib/python3.4/dist-packages/matplotlib/backends/backend_tkagg.py",
>>>>>>>> line 84, in new_figure_manager
>>>>>>>> return new_figure_manager_given_figure(num, figure)
>>>>>>>> File
>>>>>>>> "/usr/local/lib/python3.4/dist-packages/matplotlib/backends/backend_tkagg.py",
>>>>>>>> line 92, in new_figure_manager_given_figure
>>>>>>>> window = Tk.Tk()
>>>>>>>> File "/usr/lib/python3.4/tkinter/__init__.py", line 1859, in
>>>>>>>> __init__
>>>>>>>> self.tk = _tkinter.create(screenName, baseName, className,
>>>>>>>> interactive, wantobjects, useTk, sync, use)
>>>>>>>> _tkinter.TclError: no display name and no $DISPLAY environment
>>>>>>>> variable
>>>>>>>>
>>>>>>>> Some people on the Internet suggested adding matplotlib.use('Agg')
>>>>>>>> at the beginning of the notebook, but it still does not work for me.
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> David S.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>> David S.
>>>>>>
>>>>> --
>>>>>
>>>>>
>>>>> Thanks,
>>>>> David S.
>>>>>
>>>> --
>>>
>>>
>>> Thanks,
>>> David S.
>>>
>>
>>
> --


Thanks,
David S.

Reply via email to