使用nbconvert导出Jupyter幻灯片时实现Plotly图表全屏显示
解决Plotly图表填满nbconvert导出的Reveal幻灯片问题
方法一:在Notebook内添加自定义CSS(快速生效)
在你的Notebook里新增一个Markdown单元格,插入以下CSS代码,专门针对幻灯片模式下的图表容器:
<style> @media screen and (min-width: 992px) { /* 修改幻灯片模式下的输出区域样式 */ .reveal .slide .output_area { height: 100% !important; width: 100% !important; padding: 0 !important; margin: 0 !important; } /* 强制Plotly图表容器占满整个幻灯片 */ .reveal .slide .js-plotly-plot { height: 100vh !important; width: 100vw !important; } /* 移除滚动条 */ .reveal .slide .output_scroll { overflow: hidden !important; } } </style>
然后修改Plotly代码,让图表自适应容器并移除默认边距:
import plotly.express as px fig = px.scatter(x=[0,1],y=[0,1]) # 开启自适应+移除图表内外边距 fig.update_layout( autosize=True, margin=dict(l=0, r=0, t=0, b=0), paper_bgcolor='rgba(0,0,0,0)', plot_bgcolor='rgba(0,0,0,0)' ) fig.show()
最后执行你的导出命令:
jupyter nbconvert minimal_notebook.ipynb --to slides --post serve --no-input --no-prompt
方法二:修改Reveal.js模板文件(全局生效)
如果需要所有导出的幻灯片都应用该设置,可修改nbconvert的默认模板:
- 先在终端执行以下命令找到模板目录:
jupyter --data-dir
模板通常位于{上述命令返回的路径}/nbconvert/templates/reveal下。
- 打开模板文件(如
reveal.tpl或index.html,依版本而定),在<head>标签内添加方法一中的CSS代码。 - 保存后再执行导出命令,所有幻灯片都会自动应用该样式。
关键说明
只调整Plotly图表尺寸无效的核心原因:nbconvert导出的幻灯片中,单元格输出区域(output_area)有默认的宽高限制和内边距,必须先修改这个容器的样式,再配合图表的自适应设置,才能让图表完全填满幻灯片。
内容的提问来源于stack exchange,提问作者Tobias
相关产品推荐
相关产品推荐

