plt.show()在Jupyter Notebook中无法显示图片

4
当我尝试在构建在EMR实例上的pyspark环境中的jupyter笔记本上绘制一些数据时(在python3.6上),图形未显示。总结起来:当我运行plt.show()命令时,没有绘图。

首先,我尝试在开头加入%matplotlib inline,但绘图并没有出现。然后我尝试更改后端...没用!只有“Agg”后端可用,当我尝试其他后端时,代码会崩溃。

这是我尝试绘制的相同代码:

import matplotlib.pyplot as plt
plt.switch_backend('agg')
plt.plot([1,2,3,4])
plt.show()

输出

什么也没有...

我还读到,为了绘图,我需要使用“%matplotlib inline”,但这个问题是在%matplotlib inline单元格中定义的变量不存在。

让我们看看...

单元格1

dummy_var = 10

单元格 2

import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()
print(dummy_var)

输出

NameError:名称“dummy_var”未定义。

免责声明:公平地说,%matplotlib inline命令正常工作,但我还需要外部变量来绘制它们。

单元格3

%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.show()

输出

[这是绘图]

这是我的笔记本,包含错误和示例... 带有错误的图片


有点奇怪,但是当我把最后两行放在不同的单元格中时,它就可以工作了。你能检查一下吗? - Chris
你运行了%matplotlib inline吗? - Alexander
是的!这真的很奇怪。当我在本地的Jupyter笔记本上运行相同的代码时,我没有任何问题,但是当我在使用Pyspark的EMR Jupyter笔记本上执行相同的操作时,错误就会发生。 - ICC
import matplotlib.pyplot as plt should only be imported once at the top of the notebook and not in every cell. Do not import it in the cell from which you're producing a plot. I also never use %matplotlib inline - Trenton McKinney
(1) 根据截图,您在单元格16中定义了变量,并尝试在单元格10中使用它。当然,在使用变量之前必须先定义它们。 (2) agg 后端无法显示图形;它只能用于保存。 - ImportanceOfBeingErnest
显示剩余3条评论
2个回答

5
我能够通过在单独的单元格中运行以下代码,使用来自Spark的数据显示绘图:
%matplot plt

这是在sparkmagic github页面的README示例提供的。


1
终于有东西可以用了!非常感谢。我已经搜索了几个小时了。EMR上的pyspark笔记本一直没有显示任何图形。尝试了%matplotlib inline、plt.show(),但都没有成功。 - joshijai2

0

我以前也遇到过这个问题,但我使用的是以下指令:

%matplotlib inline

就在你导入模块的单元格里

另外,使用笔记本时一个好的习惯是始终将导入模块的代码放在笔记本顶部的同一单元格中。


感谢@moctarjallo,这个建议对我在使用Jupyter和Zeppelin时非常有效! - Griff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接