Python 无法使用Apache Zeppelin运行matplotlib
我正在使用齐柏林飞艇和matplotlib来可视化一些数据。我尝试了它们,但失败了,错误如下。你能给我一些如何修理的指导吗Python 无法使用Apache Zeppelin运行matplotlib,python,matplotlib,apache-zeppelin,Python,Matplotlib,Apache Zeppelin,我正在使用齐柏林飞艇和matplotlib来可视化一些数据。我尝试了它们,但失败了,错误如下。你能给我一些如何修理的指导吗 %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-3580576524078731
%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
以下内容适用于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)
这对我来说在Python3上不起作用,但很快就会被合并。根据@eddies的建议,我尝试过,这就是在齐柏林飞艇0.6.1 Python2.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()
请注意,从Zeppelin 0.7.3开始,matplotlib集成更加无缝,因此不再需要这里描述的方法 改变这一点:
import matplotlib
matplotlib.use('Agg')
与
完整代码示例Spark 2.2.0+python3(anaconda3.5):
%spark.pyspark
导入matplotlib.pyplot作为plt;plt.rcdefaults()
plt.switch_后端(“agg”)
将numpy作为np导入
输入io
def显示(p):
img=io.StringIO()
p、 savefig(img,format='svg')
img.seek(0)
打印(“%html”+img.getvalue()+”)
#示例数据
人物=(‘汤姆’、‘迪克’、‘哈利’、‘斯利姆’、‘吉姆’)
y_pos=np.arange(len(人))
性能=3+10*np.rand.rand(len(人))
错误=np.random.rand(len(人))
plt.barh(y位置,性能,XER=错误,align='center',alpha=0.4)
plt.yticks(y_位置,人员)
plt.xlabel(“性能”)
plt.title('你今天想跑多快?')
表演(plt)
我建议您使用齐柏林飞艇0.8.0中的IPython/IPySpark解释器,该解释器将很快发布。ipython中的matplotlib集成几乎与jupyter相同。有一个教程可以在ubuntu上使用Python2.7。在sudo获得安装python matplotlib后
谢谢大家,我知道我的集群会发生什么,因为我使用的是python 2.6。我需要做的就是将python升级到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()
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt; plt.rcdefaults()
plt.switch_backend('agg')
%spark.pyspark
import matplotlib.pyplot as plt; plt.rcdefaults()
plt.switch_backend('agg')
import numpy as np
import io
def show(p):
img = io.StringIO()
p.savefig(img, format='svg')
img.seek(0)
print ("%html <div style='width:600px'>" + img.getvalue() + "</div>")
# Example data
people=('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
y_pos=np.arange(len(people))
performance=3 + 10 * np.random.rand(len(people))
error=np.random.rand(len(people))
plt.barh(y_pos, performance, xerr=error, align='center', alpha=0.4)
plt.yticks(y_pos, people)
plt.xlabel('Performance')
plt.title('How fast do you want to go today?')
show(plt)