【问题标题】:plt.show() doesn't render the image on jupyter notebookplt.show() 不会在 jupyter 笔记本上渲染图像
【发布时间】:2020-01-06 22:40:56
【问题描述】:

当我尝试使用基于 EMR 实例构建的 pyspark 环境(在 python3.6 上)在 jupyter notebook 上绘制一些数据时,绘图不会出现。总结:当我运行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()

输出

[剧情]

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

【问题讨论】:

  • 奇怪,但是当我将最后两行放在不同的单元格中时,它可以工作。可以查吗?
  • 你跑%matplotlib inline了吗?
  • 是的!真是奇怪。当我在本地 jupyter notebook 上运行相同的代码时,我没有任何问题,但是当我在 emr jupyter notebook 上使用 pyspark 执行相同的代码时,就会发生错误。
  • import matplotlib.pyplot as plt 应该只在笔记本顶部导入一次,而不是在每个单元格中。不要将它导入您从中生成绘图的单元格中。我也从不使用%matplotlib inline
  • Alexander,正如我所说,当我运行 %matplotlib 时,内联工作完美,但没有外部变量。我已经尝试在第一个单元格中运行 %matplotlib inline 并且出现相同的错误

标签: python matplotlib jupyter-notebook amazon-emr


【解决方案1】:

通过在单独的单元格中运行以下命令,我能够使用来自 spark 的数据显示绘图:

%matplot plt

这是由sparkmagic github page 中的自述文件示例提供的

【讨论】:

  • 终于成功了!!非常感谢。一直在寻找几个小时。 EMR 上的 pyspark 笔记本没有显示任何情节。尝试了 %matplotlib inline, plt.show() 但没有成功。
【解决方案2】:

这曾经也发生在我身上,但我使用的是以下说明:

%matplotlib inline

就在您进行导入的单元格中

还有一个对笔记本的好习惯是始终将您的导入放在笔记本顶部的同一个单元格中。

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 2022-07-21
    • 1970-01-01
    • 2021-03-03
    • 2015-10-15
    • 1970-01-01
    • 2020-11-27
    • 2016-12-06
    • 1970-01-01
    相关资源
    最近更新 更多