Jupyter Notebook运行Plotly 3D聚类代码无可视化输出问题排查
代码无法显示的核心原因
- 执行顺序错误:先导入了plotly库再执行版本安装命令,当前内核加载的还是环境里原有版本的plotly,和指定的3.10.0版本不匹配。
- 导入逻辑混乱:重复导入plotly,还错误引入chart_studio模块,默认调用的
py.iplot是Plotly在线平台的上传渲染接口,需要绑定账号上传图表才能显示,本地环境不会直接渲染结果。 - 命令格式错误:Jupyter中执行终端命令需要加
!前缀,原代码写的lab扩展安装命令没有前缀,根本没有实际执行。 - 缺少离线渲染初始化:Plotly 3.x版本在Jupyter中做本地渲染,需要提前初始化离线绘图模式,否则默认走在线接口无法本地出图。
调整方法
- 把版本安装命令移到代码最开头,执行完安装命令后重启Jupyter内核,清空原有版本缓存,再运行后续代码。
- 删除冲突的重复导入语句,单独引入Plotly离线绘图模块,初始化notebook离线渲染配置。
- 给终端安装命令补全
!前缀,普通Jupyter Notebook用户不需要安装lab扩展即可正常出图,Lab用户安装对应版本的匹配扩展即可。
修正后可直接运行的代码
# 安装指定版本,执行完这行请重启Jupyter内核 !pip install plotly==3.10.0 import pandas as pd import plotly.graph_objs as go from plotly.offline import init_notebook_mode, iplot # 初始化Jupyter本地离线渲染 init_notebook_mode(connected=True) # Jupyter Lab用户执行下一行安装匹配扩展,普通Notebook用户可直接跳过 # !jupyter labextension install @jupyter-widgets/jupyterlab-manager plotlywidget@1.1.1 df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/alpha_shape.csv') df.head() scatter = dict( mode = "markers", name = "y", type = "scatter3d", x = df['x'], y = df['y'], z = df['z'], marker = dict( size=2, color="rgb(23, 190, 207)" ) ) clusters = dict( alphahull = 7, name = "y", opacity = 0.1, type = "mesh3d", x = df['x'], y = df['y'], z = df['z'] ) layout = dict( title = '3d point clustering', scene = dict( xaxis = dict( zeroline=False ), yaxis = dict( zeroline=False ), zaxis = dict( zeroline=False ), ) ) fig = dict( data=[scatter, clusters], layout=layout ) # 本地离线渲染图表 iplot(fig, filename='3d point clustering')
提示:如果重启内核后依然无法出图,完全关闭Jupyter后台服务重新启动即可,不要在同一个内核会话中先导入不同版本的plotly再执行版本切换,会存在缓存冲突。
内容的提问来源于stack exchange,提问作者codder
相关产品推荐
相关产品推荐

