这与这个问题非常接近,但是我添加了一些特定于我的问题的细节:
Matplotlib Plotting using AWS-EMR jupyter notebook
我想找到一种在Jupyter笔记本中使用matplotlib的方法。这是错误的代码片段,非常简单:
笔记本
import matplotlib
matplotlib.use("agg")
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()
之所以选择此代码段,是因为该行尝试使用TKinter(AWS EMR集群中未安装)时,仅此行失败:
import matplotlib.pyplot as plt
当我运行完整的笔记本代码片段时,结果是没有运行时错误,但也没有任何反应(未显示任何图形。)我可以通过以下任一代码片段来理解这种工作方式:
pyspark魔术符号
%matplotlib inline
结果
unknown magic command 'matplotlib'
UnknownMagic: unknown magic command 'matplotlib'
IPython显式魔术调用
from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')
结果
'NoneType' object has no attribute 'run_line_magic'
Traceback (most recent call last):
AttributeError: 'NoneType' object has no attribute 'run_line_magic'
到我的笔记本,该笔记本调用一个火花魔术命令,该命令可内联matplotlib图(至少是我的解释。)我在使用引导操作后尝试了这两种方法:
EMR引导程序
sudo pip install matplotlib
sudo pip install ipython
即使添加了这些,我仍然会得到一个错误,那就是matplotlib没有任何魔力。所以我的问题肯定是:
问题
如何使matplotlib在AWS EMR Jupyter笔记本中工作?
(或者如何在AWS EMR Jupyter笔记本中查看图形并绘制图像?)
答案 0 :(得分:5)
答案 1 :(得分:3)
以下方法应该起作用:
import matplotlib
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
在一个单元格中运行整个脚本
答案 2 :(得分:3)
@ 00schneider的答案确实有效。
import matplotlib.pyplot as plt
# plot data here
plt.show()
之后
plt.show()
重新运行包含以下内容的魔术单元,您将在AWS EMR Jupyter PySpark笔记本上看到一个图
%matplot plt
答案 3 :(得分:0)
要在 AWS EMR 笔记本中绘制某些内容,您只需使用 %matplot plt
。您可以在 this page from AWS 的中途看到此文档。
例如,如果我想快速绘制一个图:
import matplotlib.pyplot as plt
plt.clf() #clears previous plot in EMR memory
plt.plot([1,2,3,4])
plt.show()
%matplot plt
答案 4 :(得分:-1)
尝试以下代码。仅供参考,我们在emr-5.26.0的Python3.6中安装了matplotlib 3.1.1,并且我使用了PySpark内核。 确保“%matplotlib内联”是单元格中的第一行
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()
答案 5 :(得分:-1)
将matplotlib导入为
import matplotlib.pyplot as plt
并使用魔术命令%matplot plt
代替,如此处的教程所示:https://aws.amazon.com/de/blogs/big-data/install-python-libraries-on-a-running-cluster-with-emr-notebooks/