无法使用Apache Zeppelin运行matplotlib

hmi*_*nle 2 python matplotlib apache-zeppelin

我正在使用Zeppelin和matplotlib来显示一些数据.我尝试了但是因为下面的错误而失败了.你能给我一些如何解决它的指导吗?

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

这是我得到的错误

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
Run Code Online (Sandbox Code Playgroud)

我也尝试添加这些行,但仍然无法正常工作

import matplotlib
matplotlib.use('Agg')
Run Code Online (Sandbox Code Playgroud)

edd*_*ies 7

以下适用于Spark和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)
Run Code Online (Sandbox Code Playgroud)

Zeppelin 文档表明以下内容应该有效:

%python
import matplotlib.pyplot as plt
plt.figure()
(.. ..)
z.show(plt)
plt.close()
Run Code Online (Sandbox Code Playgroud)

这对我来说对Python 3不起作用,但看起来要用即将合并的PR#1213解决.