当前位置: 首页 > 知识库问答 >
问题:

在ipython笔记本中显示matplotlib时出错

慕容博涛
2023-03-14

我正在看一个ipython笔记本教程,上面说在一个单元中运行这个。导入numpy作为np导入数学导入matplotlib.pyplot作为plt

x = np.linspace(0, 2*math.pi) 
plt.plot(x, np.sin(x), label=r'$\sin(x)$') 
plt.plot(x, np.cos(x), 'ro', label=r'$\cos(x)$') 
plt.title(r'Two plots in a graph') 
plt.legend() 

我应该得到一个实际的图表。我明白了

<matplotlib.legend.Legend at 0x1124a2fd0>

我该怎么做呢?

共有1个答案

郎弘壮
2023-03-14

尝试在笔记本的前面添加此语句,它指示matplotlib在何处呈现绘图(即作为笔记本中嵌入的html元素):

%matplotlib内联

这背后的故事很简单,matplotlib在jupyter和ipython笔记本普及之前就已经存在了。当时创建绘图的标准方法是编写脚本,运行脚本,然后获得一个图像文件作为结果。目前,相同的图像可以在笔记本电脑中轻松直接地看到,但代价是上面的补充“重新布线”声明。

为了在笔记本中显示任何绘图,您可以使用plot语句作为该块代码的最后一行(即,绘图是返回值,由jupyter自动呈现),或者使用Abdou在注释中描述的plt.show()。

另外,请注意代码中有两个绘图:

# Put these 2 in two separate notebook blocks to get 2 separate plots.
# As-is the first one will never get displayed
plt.plot(x, np.sin(x), label=r'$\sin(x)$') 
plt.plot(x, np.cos(x), 'ro', label=r'$\cos(x)$') 

如果您想将所有绘图渲染为一个图像(matplotlib imho会很快让人毛骨悚然),请查看子绘图文档

为了使结果更漂亮,在图的末尾包含一个以避免难看的

 类似资料:
  • 问题内容: 在IPython / Jupyter Notebook中运行的大多数语言内核的错误报告都指出发生错误的行;但是(至少默认情况下)在笔记本电脑中未显示行号。 是否可以将行号添加到IPython / Jupyter Notebook? 问题答案: -在CodeMirror区域中切换行号。有关其他键盘快捷键,请参见快速帮助。 详细信息- (或)将您带入命令模式,然后按键应切换当前单元格行号的

  • 每次启动IPython笔记本时,我运行的第一个命令是 有没有办法改变我的配置文件,以便当我启动IPython时,它自动处于这种模式?

  • 我正在启动一个IPython笔记本,matplotlib输出没有显示内联,而是这样: 代码如下: 笔记本以- pylab=inline开始,当我检查它时,它似乎是正确的: 这是在 IPython 1.1.0 中。当我尝试使用 %pylab 内联时,我得到了类似的结果: 还有什么可能是图没有显示在内的原因?

  • 在ipython笔记本中使用matplotlib内联后端时,默认行为是使用bbox_inches='tight'通过savefig()在内部生成嵌入的png图像。这消除了轴周围的空白,在大多数情况下非常有用。 但是,有时可能需要(暂时)禁用此功能,例如,当他想要手动保持两个图形垂直对齐时(假设我们不想在此处使用子图): 那么如何禁用这种行为呢?谢谢~ 为了使这里涉及的问题更加明确(多亏了Anzel

  • 问题内容: 我正在使用内联模式下的IPython Notebook和plot命令绘制一个NumPy值数组。 结果输出为: 然后,我的图显示在这些输出线的下方。 有没有办法只显示图并从输出中隐藏? 问题答案: 您可以使用分号结束行。这样可以在生成图时抑制不必要的输出: 通常,使用分号可以阻止IPython从代码块的该行打印任何输出值。例如,执行包含代码的单元将不会输出。 另一种方法是将变量绑定到图:

  • 所以我使用joblib来并行化一些代码,我注意到在jupyter笔记本中使用它时无法打印东西。 我尝试在ipython中使用相同的示例,效果非常好。 下面是一个在jupyter笔记本电脑中写入的最小(非)工作示例 所以我得到的输出为但没有打印任何内容。 我期望看到的(打印顺序在现实中可能是随机的): 您可以在笔记本进程的日志中看到打印。但我希望打印发生在笔记本上,而不是笔记本过程的日志。 我已经打