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
相关产品推荐
相关产品推荐

