如何在Jupyter Notebook中抑制不必要的输出

问题描述 投票:0回答:1

我想在运行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);
jupyter-notebook output
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.