我想在运行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);
如果单元格最后一行的典型输出是您要抑制的输出,则分号将起作用。正如@kynan here简要总结的那样,“之所以起作用,是因为笔记本显示了最后一个命令的返回值。通过添加;最后一个命令是“ nothing”,因此没有要显示的返回值。”
但是,在生成对象的单元格内部有一个循环。罪魁祸首似乎是plt.clf()
。注释掉该行或将其从您的代码中删除,它应该对其进行修复。另外,我将删除plt.show()
,因为删除plt.clf()
时没有必要,而且我看到它正在循环中,导致fig = plt.figure(figsize=(15,4))
也显示输出的文本,就像您在问题中发布的一样。(我将为以后的其他人员提供补充,重要的是在单元格的开头(或在此单元格上方某个位置的单元格的开头)具有%matplotlib inline
或%matplotlib notebook
。)]