Jupyter笔记本中没有显示绘图

9

我试图为 Anscombe 数据集创建 2x2 的图表

加载数据集并将数据集中的每个类别分开

import seaborn as sns
import matplotlib.pyplot as plt

anscombe = sns.load_dataset('anscombe')

dataset_1 = anscombe[anscombe['dataset'] == 'I']
dataset_2 = anscombe[anscombe['dataset'] == 'II']
dataset_3 = anscombe[anscombe['dataset'] == 'III']
dataset_4 = anscombe[anscombe['dataset'] == 'IV']

创建一个图形并将其分成4个部分。
fig = plt.figure()

axes_1 = fig.add_subplot(2,2,1)
axes_2 = fig.add_subplot(2,2,2)
axes_3 = fig.add_subplot(2,2,3)
axes_4 = fig.add_subplot(2,2,4)

axes_1.plot(dataset_1['x'], dataset_1['y'], 'o')
axes_2.plot(dataset_2['x'], dataset_2['y'], 'o')
axes_3.plot(dataset_3['x'], dataset_3['y'], 'o')
axes_4.plot(dataset_4['x'], dataset_4['y'], 'o')

axes_1.set_title('dataset_1')
axes_2.set_title('dataset_2')
axes_3.set_title('dataset_3')
axes_4.set_title('dataset_4')

fig.suptitle('Anscombe Data')

fig.tight_layout()


我從每個繪圖中得到的唯一輸出是:
[<matplotlib.lines.Line2D at 0x24592c94bc8>]

我做错了什么?


2
这个问题无法重现。我可以使用你的代码得到相同的图形。请在conda提示符下运行conda update condaconda update --all。此外,请在提示符下输入jupyter lab而不是jupyter notebook。这是Jupyter的新版本,已经包含在发行版中。 - Trenton McKinney
好的,我正在尝试。 - pquest
Matplotlib当前正在使用module://ipykernel.pylab.backend_inline模块作为非GUI后端,因此不能显示图形。 """用于启动IPython内核的入口点 - pquest
https://dev59.com/UVoU5IYBdhLWcg3wg3So - Trenton McKinney
4个回答

19
如果您正在使用Jupyter Notebook,则可以将以下行添加到调用所有导入的顶部单元格中。以下命令将呈现您的图形。

如果你正在使用 Jupyter Notebook,那么你可以在顶部的 cell 中添加下面这行代码来调用所有的导入。以下命令将渲染你的图表。

翻译后的内容为:

如果您正在使用Jupyter Notebook,则可以将以下行添加到调用所有导入的顶部单元格中。以下命令将呈现您的图形

%matplotlib inline

在此输入图片描述


让我在我的环境中尝试一下。 - Rohan Nagavardhan
尝试使用Colab笔记本 https://colab.research.google.com/notebooks/ - Rohan Nagavardhan
请问您能否分享一下您的代码?我在Colab上也尝试了,但是没有成功。 - pquest
收到以下警告: Matplotlib目前正在使用module://ipykernel.pylab.backend_inline,这是一个非GUI后端,因此无法显示图形。 """启动IPython内核的入口点。 - pquest
查看此链接:https://dev59.com/UVoU5IYBdhLWcg3wg3So - Rohan Nagavardhan

2

导入matplotlib后,添加%matplotlib inline或使用matplotlib.pyplot.ion()

来自绘图文档

从IPython 5.0和matplotlib 2.0开始,您可以避免使用IPython特定的魔法,而使用matplotlib.pyplot.ion()/matplotlib.pyplot.ioff(),它们具有在IPython之外工作的优点。


重新启动你的内核,看看是否解决了问题。你也可以删除内联部分,看看它是否出现在新窗口中。 - Hossein
1
尝试使用 plt.draw()plt.show() 强制绘图,看看是否有帮助。 也可以尝试使用 %matplotlib notebook - Hossein
无法工作。您能否在您的环境中检查相同的代码并确认它是否可以正常工作? - pquest
在我的端上运行良好。尝试使用 display()。将你的最后一个语句包裹在 display() 中,看看是否有效。如果这样还不行,我想更新可能是个好主意! - Hossein
1
只是问一下,你不会碰巧在使用VSCode的IPython交互模式吧?如果是的话,VSCode有自己的问题,请使用Jupyter Notebook。如果你正在使用Jupyter Notebook,请尝试更新它,包括Jupyter本身和Notebook。 - Hossein
显示剩余4条评论

1
我尝试了以上所有方法,最终发现matplotlib和一个名为dtale的库之间存在冲突。当我移除了导入dtale命令并重新启动内核后,一切都正常工作了。

-1

1
这解决了我的问题,其他答案都没有用。谢谢。 - yjsa

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