Plotly交互式绘图报错求助:代码执行出现HTML脚本类错误
解决Plotly离线绘图的错误问题
你的代码存在几个关键问题,导致出现了HTML脚本形式的错误输出,以下是修改方案和解释:
错误原因
- 错误调用Plotly绘图函数:
plotly.plot(df, "line")不是Plotly处理DataFrame的正确方式,该函数需要传入Plotly的Figure对象而非直接传入DataFrame。 - 混用Matplotlib:
plt.show()是Matplotlib的显示函数,和Plotly的离线绘图逻辑完全无关,会干扰输出。 - 未正确使用cufflinks封装的接口:你已经导入了cufflinks,却没有用它简化DataFrame转Plotly图形的操作。
修改后的代码(推荐使用cufflinks)
import pandas as pd import numpy as np import cufflinks as cf from plotly.offline import init_notebook_mode, iplot # 初始化Jupyter Notebook的Plotly离线环境 init_notebook_mode(connected=True) cf.go_offline() # 生成测试数据 df = pd.DataFrame(np.random.randn(100,4), columns="A B C D".split()) df2 = pd.DataFrame({"Category":['A','B','C'], "Values":[32,43,50]}) # 用cufflinks的iplot绘制折线图(直接对DataFrame调用) df.iplot(kind='line') # 若需绘制df2的柱状图,可执行: # df2.iplot(kind='bar', x='Category', y='Values')
纯Plotly原生实现方案
如果不想依赖cufflinks,可直接使用Plotly的API创建图形:
import pandas as pd import numpy as np import plotly.graph_objects as go from plotly.offline import init_notebook_mode, iplot init_notebook_mode(connected=True) df = pd.DataFrame(np.random.randn(100,4), columns="A B C D".split()) # 手动创建Plotly Figure对象并添加折线轨迹 fig = go.Figure() for column in df.columns: fig.add_trace(go.Scatter(x=df.index, y=df[column], name=column)) # 在Notebook中显示交互式图形 iplot(fig)
关键修改点说明
- 移除了
matplotlib.pyplot的导入和plt.show(),避免两种绘图库冲突。 - 使用
iplot()替代错误的plotly.plot(),iplot()是Plotly离线模式下在Notebook中显示图形的标准方法。 - 利用cufflinks的封装能力,直接对DataFrame调用
iplot()即可快速生成Plotly图形,无需手动构建Figure对象。
内容的提问来源于stack exchange,提问作者Kian-Codes
相关产品推荐
相关产品推荐

