2016-07-19 7 views
1

Я использую Zeppelin и matplotlib для визуализации некоторых данных. Я пробую их, но с ошибкой ниже. Не могли бы вы дать мне несколько советов, как это исправить?Не удается запустить matplotlib с Apache Zeppelin

%pyspark 
import matplotlib.pyplot as plt 
plt.plot([1,2,3,4]) 
plt.ylabel('some numbers') 
plt.show() 

А вот ошибка у меня

Traceback (most recent call last): 
    File "/tmp/zeppelin_pyspark-3580576524078731606.py", line 235, in <module> 
    eval(compiledCode) 
    File "<string>", line 1, in <module> 
    File "/usr/lib64/python2.6/site-packages/matplotlib/pyplot.py", line 78, in <module> 
    new_figure_manager, draw_if_interactive, show = pylab_setup() 
    File "/usr/lib64/python2.6/site-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup 
    globals(),locals(),[backend_name]) 
    File "/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_gtkagg.py", line 10, in <module> 
    from matplotlib.backends.backend_gtk import gtk, FigureManagerGTK, FigureCanvasGTK,\ 
    File "/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_gtk.py", line 8, in <module> 
    import gtk; gdk = gtk.gdk 
    File "/usr/lib64/python2.6/site-packages/gtk-2.0/gtk/__init__.py", line 64, in <module> 
    _init() 
    File "/usr/lib64/python2.6/site-packages/gtk-2.0/gtk/__init__.py", line 52, in _init 
    _gtk.init_check() 
RuntimeError: could not open display 

Я также пытаюсь добавить эти строки, но до сих пор не может работать

import matplotlib 
matplotlib.use('Agg') 

ответ

6

следующие работы для меня с искрой & Python 3:

%pyspark 

import matplotlib 
import io 

# If you use the use() function, this must be done before importing matplotlib.pyplot. Calling use() after pyplot has been imported will have no effect. 
# see: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 

def show(p): 
    img = io.StringIO() 
    p.savefig(img, format='svg') 
    img.seek(0) 
    print("%html <div style='width:600px'>" + img.getvalue() + "</div>") 

plt.plot([1,2,3,4]) 
plt.ylabel('some numbers') 
show(plt) 

Цеппелин documentation предполагает, что должно работать:

%python 
import matplotlib.pyplot as plt 
plt.figure() 
(.. ..) 
z.show(plt) 
plt.close() 

Это не работает для меня с Python 3, но выглядит решать с скоро-к-быть-сливались PR #1213.

+0

Он работает с Python2.7 на ubuntu. После 'sudo apt-get install python-matplotlib' –

+0

Спасибо, ребята, я знаю, что происходит с моим кластером, потому что я использую python 2.6. Все, что мне нужно сделать, это обновить мой python до версии 2.7 – hminle

0

Согласно @eddies предложению, я попробовал, и это то, что работает для меня на Цеппелин 0.6.1 питона 2,7

%python 
import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
plt.figure() 
plt.plot([1,2,3,4]) 
plt.ylabel('some numbers') 
z.show(plt, width='500px') 
plt.close() 
Смежные вопросы