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.