在jupyter演示文稿中容纳大型幻灯片

时间:2018-11-07 09:47:04

标签: jupyter-notebook

我有一个jupyter笔记本,正在使用以下方式将其转换为幻灯片显示:

jupyter nbconvert notebook.ipynb --to slides --post serve --SlidesExporter.reveal_scroll=True

某些幻灯片包含一个代码段,其中有一个数字作为输出。此刻,该图从屏幕底部消失。因为这是幻灯片的主要目的,所以有一种方法可以启用滚动(我认为--SlidesExporter.reveal_scroll=True应该这样做,但是在我的情况下不起作用-没有滚动条出现)。还是有一种方法可以将输入和输出分成两张幻灯片,或者隐藏输入代码并仅显示输出图形。

代码单元太长的示例如下:

import numpy as np
import matplotlib.pyplot as plt
t=np.linspace(0,1,1000)
Sr=np.exp(1j*t*(15)*2*np.pi)* np.exp(-5 *t)
#Trial wavefunctions
#Frequency (Hz)
f=[5,10,15,20]

y=np.cos(f[0]*2*np.pi*t)

#Multiply the signal with our trial cosine function

S_cos = np.real(Sr)*y

#Integrate the signal (using Simpson's rule for numerical integration)
from scipy.integrate import simps
area=np.empty([4,])
area[0] = simps(S_cos,dx=1)
print('Area under product function = %.1f' %area[0])

#Plot the real part of the signal
plt.figure(figsize=(14,6))
plt.subplot(1,2,1)
plt.plot(t,np.real(Sr),label='Signal')
plt.plot(t,y,label='Trial cosine')
plt.xlabel('Time (s)')
plt.ylabel('Intensity')
plt.legend()

plt.subplot(1,2,2)
plt.plot(t,S_cos, 'g', label='Product (signal*trial cosine)')
plt.xlabel('Time (s)')
plt.ylabel('Intensity')
plt.legend()
plt.show() 

1 个答案:

答案 0 :(得分:2)

nbconvert的一位贡献者制作了一个模板,该模板可以隐藏幻灯片中的输入代码。

将以下代码另存为output_toggle.tpl,并将其与.ipynb文件一起放置在文件夹中。准备就绪后,只需运行:jupyter nbconvert notebook.ipynb --to slides --post serve --template output_toggle

{# Jupyter Notebook Toggle Template for Slides by Damian Avila 
   from http://www.damian.oquanta.info/posts/hide-the-input-cells-from-your-ipython-slides.html
#}

{%- extends 'slides_reveal.tpl' -%}

{% block input_group -%}
<div class="input_hidden">
{{ super() }}
</div>
{% endblock input_group %}

{%- block header -%}
{{ super() }}

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<style type="text/css">
.input_hidden {
  display: none;
//  margin-top: 5px;
}
</style>

<script>
$(document).ready(function(){
  $(".output_wrapper").click(function(){
      $(this).prev('.input_hidden').slideToggle();
  });
})
</script>
{%- endblock header -%}

如果需要在演示时显示代码,则可以单击输出以显示输入单元格。