Flask和pyecharts实现动态数据可视化
1:数据源
HollywoodMovieDataset:好莱坞2006-2011数据集
实验目的:实现统计2006-2011的数据综合统计情况,进行数据可视化
gitee地址:https://gitee.com/dgwcode/an_example_of_py_learning/tree/master/MovieViwer
1.数据例子:
Film,MajorStudio,Budget 300,WarnerBros, 300,WarnerBros.,65 3:10toYuma,Lionsgate,48 DaysofNight,Independent,32 AcrosstheUniverse,Independent,45 Alienvs.Predator--Requiem,Fox,40 AlvinandtheChipmunks,Fox,70 AmericanGangster,Universal,10 BeeMovie,Paramount,15 Beowulf,Paramount,15 BladesofGlory,Paramount,61
importpandasaspd
fromthreadingimportTimer
importmath
#coding=utf-8
defgetTotalData():
data1=pd.read_csv('static/1.csv');
data2=pd.read_csv('static/2.csv');
data3=pd.read_csv('static/3.csv');
data4=pd.read_csv('static/4.csv');
data5=pd.read_csv('static/5.csv');
datadic1=[];
datadic2=[];
datadic3=[];
datadic4=[];
datadic5=[];
#处理数据.csv
forx,yinzip(data1['MajorStudio'],data1['Budget']):
datadic1.append((x,y))
forx,yinzip(data2['MajorStudio'],data2['Budget']):
datadic2.append((x,y))
forx,yinzip(data3['LeadStudio'],data3['Budget']):
datadic3.append((x,y))
forx,yinzip(data4['LeadStudio'],data4['Budget']):
datadic4.append((x,y))
forx,yinzip(data5['LeadStudio'],data5['Budget']):
datadic5.append((x,y))
totaldata=[];
totaldata.append(datadic1);
totaldata.append(datadic2);
totaldata.append(datadic3);
totaldata.append(datadic4);
totaldata.append(datadic5);
returntotaldata;
indexx=0;
curindex=0;
end=5;
returnData=dict();
#定时处理数据
defdataPre():
globalindexx,end,curindex,flag,returnData;
totalData=getTotalData();#list[map]
#x=len(totalData[0])+totalData[1].len()+totalData[2].len()+totalData[3].len()+totalData[4].len();
data=totalData[indexx];
#init
#print(curindex,end,indexx)
#print(len(data))
fork,vindata[curindex:end]:
ifv=="nan"ormath.isnan(v):#截断kv中nan
continue;
ifreturnData.get(k,-1)==-1:
print(k,v);
returnData[k]=v;
else:
returnData[k]=returnData[k]+v;
print(len(returnData))
ifend=len(data)-20:
indexx+=1;
curindex=0;
end=20;
t=Timer(2,dataPre)
t.start()
print(returnData.keys(),end='\n')
returnreturnData;
if__name__=="__main__":
dataPre();
4:实际程序入口
fromflaskimportFlask,render_template
frompyecharts.chartsimportBar
frompyechartsimportoptionsasopts
importmath
importdealdata
fromthreadingimportTimer
frompyecharts.globalsimportThemeType
app=Flask(__name__,static_folder="templates")
@app.route('/')
defhello_world():
dataPre();#数据入口
returnrender_template("index.html")
#定义全局索引
indexx=0;
curindex=0;
end=5;
returnData=dict();
#定时处理数据
defdataPre():
globalindexx,end,curindex,flag,returnData;
totalData=dealdata.getTotalData();#list[map]
#x=len(totalData[0])+totalData[1].len()+totalData[2].len()+totalData[3].len()+totalData[4].len();
data=totalData[indexx];
#print(totalData)
#init
#print(curindex,end,indexx)
#print(len(data))
fork,vindata[curindex:end]:
ifv=="nan"ormath.isnan(v):#截断kv中nan
continue;
ifreturnData.get(k,-1)==-1:
returnData[k]=v;
else:
returnData[k]=returnData[k]+v;
print(len(returnData))#反应长度关系
ifend=len(data)-15:
indexx+=1;
curindex=0;
end=15;
t=Timer(1,dataPre)
t.start()
#print(returnData,end='\n')
defbar_reversal_axis()->Bar:
globalreturnData;
#print(sorted(returnData.items(),key=lambdax:x[1]))
sorted(returnData.items(),key=lambdax:x[1],reverse=False)
#print(returnData.keys())
c=(
Bar({"theme":ThemeType.MACARONS})
.add_xaxis(list(returnData.keys()))
.add_yaxis("电影公司名称:",list(returnData.values()),color="#BF3EFF")
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right",color="#BF3EFF",
font_size=12))
.set_global_opts(title_opts=opts.TitleOpts(title="2007-2011好莱坞电影最受欢迎公司",
pos_left='60%',subtitle="当前"+str(2006+indexx)+"年"))
)
returnc;
@app.route("/barChart")
defindex():
c=bar_reversal_axis();
returnc.dump_options_with_quotes();
if__name__=='__main__':
app.run();
5:前端
Awesome-pyecharts
6:扩展资料
https://github.com/pyecharts/pyecharts/tree/master/pyecharts/render/templates
{%import'macro'asmacro%}
{{chart.page_title}}
{{macro.render_chart_dependencies(chart)}}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。