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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。