You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotly离线绘图时第二个图表覆盖第一个的问题解决请求

解决Plotly Offline连续绘图时图表被覆盖的问题

这问题我之前调试Plotly的时候也踩过坑!你遇到的情况是因为pyo.plot()默认会生成同一个临时HTML文件(默认文件名类似temp-plot.html),当你连续调用两次时,第二个图表的内容直接覆盖了第一个的文件内容。浏览器打开两个标签页时,其实指向的是同一个文件,所以最后显示的都是后生成的fig2。而分开运行时,第一个图表的文件已经被浏览器加载完成,第二个运行时才覆盖文件,所以两个标签页能正常显示不同内容。

最简单的修复方法:指定不同的输出文件名

给每次pyo.plot()调用加上filename参数,让两个图表生成不同的HTML文件,就不会互相覆盖了。修改后的代码如下:

import plotly.offline as pyo
import plotly.graph_objs as go
import pandas as pd

filepath = r'C:\Data'
ethnicity = pd.read_csv(filepath+'/Ethnicity.csv', header=None, names=['number'])

# chart 1 - 指定独立文件名
pietrace1 = {'type':'pie', 'labels':ethnicity.index.tolist(), 'values':ethnicity.number, 'direction':'clockwise' }
data1 = [pietrace1]
layout1 = {'title':'Ethnicity of students (Chart 1)', 'xaxis':{'title':'Ethnicity'} , 'yaxis':{'title':'Number'} }
fig1 = go.Figure(data=data1, layout=layout1)
pyo.plot(fig1, filename='ethnicity_chart1.html')

# chart 2 - 指定不同的文件名
colors = ['rgb(12,192,170)', 'rgb(190,252,250)', 'rgb(77,194,84)', 'rgb(211,238,128)', 'rgb(97,167,193)' ]
pietrace2 = {'type':'pie', 'labels':ethnicity.index.tolist(), 'values':ethnicity.number, 'direction':'clockwise', 'marker':{'colors':colors, 'line':{'width':1, 'color':'white'}} }
data2 = [pietrace2]
layout2 = {'title':'Ethnicity of students (Chart 2)', 'xaxis':{'title':'Ethnicity'} , 'yaxis':{'title':'Number'} }
fig2 = go.Figure(data=data2, layout=layout2)
pyo.plot(fig2, filename='ethnicity_chart2.html')

额外小修正说明

我还帮你修复了colors列表里的一个语法错误:原代码里的rgb(77194,84)少了逗号,应该是rgb(77,194,84),不然第二个图表可能会渲染失败。

内容的提问来源于stack exchange,提问作者Guddi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:48:09