如何使matplotlib在AWS EMR Jupyter笔记本中工作?

Mat*_*att 17 python matplotlib amazon-emr pyspark jupyter-notebook

这与这个问题非常接近,但是我添加了一些特定于我的问题的细节:

使用AWS-EMR jupyter笔记本进行Matplotlib绘图

我想找到一种在Jupyter笔记本中使用matplotlib的方法。这是错误的代码片段,非常简单:

笔记本

import matplotlib
matplotlib.use("agg")
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()
Run Code Online (Sandbox Code Playgroud)

我选择此代码段是因为仅此行在尝试使用TKinter时失败(该行未安装在AWS EMR集群中):

import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

当我运行完整的笔记本代码片段时,结果是没有运行时错误,但什么也没有发生(未显示任何图形。)我对这可以起作用的一种方式的理解是添加以下两个代码片段之一:

pyspark魔术符号

%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

结果

unknown magic command 'matplotlib'
UnknownMagic: unknown magic command 'matplotlib'
Run Code Online (Sandbox Code Playgroud)

IPython显式魔术调用

unknown magic command 'matplotlib'
UnknownMagic: unknown magic command 'matplotlib'
Run Code Online (Sandbox Code Playgroud)

结果

'NoneType' object has no attribute 'run_line_magic'
Traceback (most recent call last):
AttributeError: 'NoneType' object has no attribute 'run_line_magic'

Run Code Online (Sandbox Code Playgroud)

到我的笔记本,笔记本会调用一个火花魔术命令,该命令会内联matplotlib图(至少是我的解释。)我在使用引导操作后尝试了这两种方法:

EMR引导程序

from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')
Run Code Online (Sandbox Code Playgroud)

即使添加了这些,我仍然会得到一个错误,那就是matplotlib没有任何魔力。所以我的问题肯定是:

如何使matplotlib在AWS EMR Jupyter笔记本中工作?

(或者如何在AWS EMR Jupyter笔记本中查看图形并绘制图像?)

Fox*_* Ng 5

如您所述,matplotlibEMR群集上未安装,因此会发生此类错误:

错误

但是,它实际上在托管的Jupyter笔记本实例(docker容器)中可用。使用%%local魔术可以使您在本地运行单元:

本地

  • 这个答案使得第一个单元(我放置“%%local”的地方)运行得更快,但添加任何额外的导入(例如张量流)会失败,尽管之前已安装并工作。赞成是因为它在技术上使代码片段运行,但不接受是因为它使笔记本几乎无法使用。 (2认同)

小智 5

@00schneider 的答案确实有效。

import matplotlib.pyplot as plt

# plot data here
plt.show()
Run Code Online (Sandbox Code Playgroud)

plt.show()

重新运行包含以下内容的魔法单元,您将在 AWS EMR Jupyter PySpark 笔记本上看到一个图

%matplot plt
Run Code Online (Sandbox Code Playgroud)


Pra*_*bhu 2

以下应该有效:

import matplotlib
%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
Run Code Online (Sandbox Code Playgroud)

在一个单元格中运行整个脚本

  • 我很欣赏尝试的解决方案。我试图在问题中解决这个问题,但在“%matplotlib inline”行上失败并出现此错误(我将错误添加到原始问题中):unknown magic command 'matplotlib' UnknownMagic:unknown magic command 'matplotlib' (3认同)
  • 好吧..再尝试一次..你可以尝试 `get_ipython().magic(u'matplotlib inline')` 而不是 `%matplotlib inline` (3认同)