如何不向Plotly服务器发送数据,离线创建Plotly仪表盘?
如何在Jupyter Notebook中创建无需上传至Plotly账号的离线仪表盘
好问题!我之前也踩过这个坑——Plotly官网的Dashboard API确实默认绑定云端账号,会把仪表盘上传后返回URL,但咱们完全可以在本地Jupyter环境里搭建纯离线的交互式仪表盘,根本不需要碰云端账号。下面给你两种实用方案:
方案一:用JupyterDash搭建完整交互式仪表盘(推荐)
Dash是Plotly官方的交互式仪表盘框架,而jupyter-dash是专门适配Jupyter Notebook的版本,所有运行逻辑都在本地,不会上传任何数据到云端。
步骤1:安装依赖
先确保你装了必要的库:
pip install dash jupyter-dash plotly
步骤2:完整代码示例
下面是一个带下拉交互的离线仪表盘,直接在Notebook里运行:
from jupyter_dash import JupyterDash import dash_core_components as dcc import dash_html_components as html from dash.dependencies import Input, Output import plotly.express as px # 加载示例数据(你可以换成自己的数据集) df = px.data.iris() # 初始化JupyterDash应用——完全本地,无需云端连接 app = JupyterDash(__name__) # 定义仪表盘的布局:标题+下拉框+图表 app.layout = html.Div([ html.H1("本地离线鸢尾花数据集仪表盘"), dcc.Dropdown( id='species-selector', options=[{'label': species, 'value': species} for species in df['species'].unique()], value='setosa' # 默认选中值 ), dcc.Graph(id='scatter-plot') ]) # 定义交互回调:下拉框选择变化时更新图表 @app.callback( Output('scatter-plot', 'figure'), Input('species-selector', 'value') ) def update_plot(selected_species): filtered_data = df[df['species'] == selected_species] fig = px.scatter(filtered_data, x='sepal_length', y='sepal_width', color='species') return fig # 在Notebook里运行应用:inline模式直接嵌入单元格,external模式在本地浏览器打开 app.run_server(mode='inline')
关键说明
JupyterDash完全适配Notebook环境,运行时会启动一个本地小服务器,所有交互都在本地处理,不会向Plotly云端发送任何请求。- 你可以自由添加滑块、按钮、表格等组件,打造复杂的交互式仪表盘,全程离线。
方案二:用Plotly子图组合静态仪表盘(适合简单场景)
如果不需要复杂的交互组件,只是想把多个Plotly图表组合成类似仪表盘的布局,直接用plotly.subplots就可以,同样完全离线:
import plotly.graph_objects as go from plotly.subplots import make_subplots import plotly.express as px df = px.data.iris() # 创建2x2的子图布局 fig = make_subplots( rows=2, cols=2, subplot_titles=("花萼长度分布", "花萼宽度分布", "花瓣长度分布", "花瓣宽度分布") ) # 逐个添加图表到子图 fig.add_trace(go.Histogram(x=df['sepal_length'], nbinsx=10), row=1, col=1) fig.add_trace(go.Histogram(x=df['sepal_width'], nbinsx=10), row=1, col=2) fig.add_trace(go.Histogram(x=df['petal_length'], nbinsx=10), row=2, col=1) fig.add_trace(go.Histogram(x=df['petal_width'], nbinsx=10), row=2, col=2) # 调整整体布局样式 fig.update_layout( height=600, width=800, title_text="鸢尾花数据集统计仪表盘", showlegend=False ) # 在Notebook里直接显示图表 fig.show()
这种方式适合快速把多个可视化结果整合在一起,没有额外的交互逻辑,同样不需要依赖Plotly云端账号。
总结
- 想要完整交互式仪表盘:用
JupyterDash,本地运行,支持各种组件交互,完全离线。 - 想要简单多图表组合:用
plotly.subplots,直接在Notebook里显示静态组合仪表盘。 - 避开Plotly官网的Dashboard API(那个是专门用于创建云端共享仪表盘的),上面两种方案完全满足你“无需上传至个人Plotly账号”的需求。
内容的提问来源于stack exchange,提问作者Nightwing
相关产品推荐
相关产品推荐

