【问题标题】:How to suppress unwanted output in Jupyter Notebook如何在 Jupyter Notebook 中抑制不需要的输出
【发布时间】:2020-01-27 17:50:30
【问题描述】:

我想在运行 Jupyter Notebook 单元格时禁止任何文本输出。具体来说,我输出了一些数字,每个数字都附有类似的内容:

<Figure size 432x288 with 0 Axes>

我已经看到,如果我在行尾添加 ;,它应该会抑制输出,但在我的情况下它不起作用。

代码:

for i in tqdm_notebook(range(data.shape[0])):
    print('BIN:',i)
    fig = plt.figure(figsize=(15,4))
    plt.tight_layout()
    gs = gridspec.GridSpec(2,1)
    ax1 = fig.add_subplot(gs[0, 0])
    ax1.plot(match[window_begin:window_end],'k')
    plt.vlines(i,-np.max(match[window_begin:window_end])*0.05,np.max(match[window_begin:window_end])*1.05,'r',linewidth=4,alpha=0.2)
    ax1.set_xlim(0-1,post_bin_match_median[window_begin:window_end].shape[0])
    ax1.set_ylim(-np.max(match[window_begin:window_end])*0.05,np.max(match[window_begin:window_end])*1.05)
    plt.tick_params(axis='y', which='both', left=True, labelleft=False)
    ax1.tick_params(axis='x', which='both', bottom=False, labelbottom=False)
    plt.grid()

    ax2 = fig.add_subplot(gs[1, 0])
    fig.subplots_adjust(hspace=0.0)
    ax2.plot(gp_mjds[:],gp_data[i,:],'k')
    ax2.errorbar(remain, all[i,:], yerr=all_noise[i], fmt=".k", capsize=0);
    ax2.fill_between(gp[:], gp2[i,:] - np.sqrt(gp_var[i,:]), gp2[i,:] + np.sqrt(gp_var[i,:]),color="k", alpha=0.2)
    ax2.set_xlim(gp[0],gp[-1])
    plot_y_min = np.minimum(np.min(gp2[:,:] - np.sqrt(gp_var[:,:])),np.min(all_profile_residuals[:,:]-y_noise))
    plot_y_max = np.maximum(np.max(gp2[:,:] + np.sqrt(gp_var[:,:])), np.max(all[:,:]+y_noise))
    ax2.set_ylim(plot_y_min,plot_y_max)
    plt.grid()
    plt.show()
    plt.clf()
    plt.close(fig);

【问题讨论】:

  • 您是否将%matplotlib inline%matplotlib notebook 作为该单元格上方某处的第一行?

标签: jupyter-notebook output


【解决方案1】:

如果单元格最后一行的典型输出是您要抑制的内容,则分号将起作用。正如@kynan here 简明扼要地总结的那样,“之所以有效,是因为笔记本显示了最后一个命令的返回值。通过添加 ; 最后一个命令是“无”,因此没有返回值显示。”

但是,您在生成对象的单元格内有一个循环。
罪魁祸首似乎是plt.clf()。注释掉该行或将其从您的代码中删除,它应该会修复它。
另外,我会删除plt.show(),因为在删除plt.clf() 时没有必要这样做,而且我看到它处于循环中,导致fig = plt.figure(figsize=(15,4)) 也显示输出文本,就像您在问题中发布的那样。
(稍后我会为其他人补充,重要的是在单元格的开头(或在此单元格上方的某个单元格的开头)有 %matplotlib inline%matplotlib notebook。)

【讨论】:

  • 谢谢。那么是否无法抑制`
    ' 输出?
  • 所以你在某处有%matplolib inlinematplotlib notebook?它应该是可以抑制的。但是,您的代码不是有人可以直接调试的情况。我正在尝试制作一个等效的玩具示例进行测试。
  • 我的测试表明plt.clf() 正在生成虚假输出。你能把它去掉,让你的地块静止吗?
猜你喜欢
  • 1970-01-01
  • 2020-09-03
  • 2019-12-25
  • 2014-07-04
  • 2019-03-02
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
  • 2020-12-12
相关资源
最近更新 更多