def job_page(job): # 需要处理的数据 city_num_list = DATA.get_the_kw_msg(lan_name=job) # 生成图表 ## 饼图 city_geo_page = Page().add( pie_yht(attr_v1=city_num_list[:20], chart_name=job + '前二十个城市各自占的比重', v1_name='城市')) ## 生成柱状图 city_bar_page = Page().add( bar_sssf(attr_v1=city_num_list[:100], chart_name=job + '每个城市中该职位数量', v1_name='城市')) return render_template( 'lan.html', title=job, top5_city=DATA.top5_city_name(), top5_lan=DATA.top5_lan_name(), top5_job=DATA.top5_job_name(), city_geo_page=city_geo_page.render_embed(), city_bar_page=city_bar_page.render_embed(), script_list=city_geo_page.get_js_dependencies() + city_bar_page.get_js_dependencies(), )
def search(): page = Page() bar = get_bar() page.add(bar) keyword = request.args.get('keyword').replace(' ', '') # 获得前端传回的keyword print(keyword) if ':' in keyword: # 判断是否是高级搜索 key = keyword.split(':')[0] # 获取传回的高级搜索关键字,如"诗人:李白",此时获取‘诗人’ value = keyword.split(':')[1] # 获取‘李白’ if key == '诗人' and value: # 判断高级搜索为‘诗人’,并且搜索内容不为空 poet = Poet.query.filter_by( name=value).first() # 在数据库中查询姓名为”李白“的诗人数据 if poet: # 如果查询到 context = { 'poet': poet, # 诗人字段信息 'poem': poet.poems # 诗人的是诗的字段信息 } return render_template('search.html', **context, chart=page.render_embed()) else: # 如果没有查询到 context = { 'message': '没有找到相关内容' # 返回信息 } return render_template('search.html', **context) # 渲染页面 elif key == '诗句' and value: # 判断高级搜索为‘诗句’,并且搜索内容不为空 如”诗句:清明“ poem = Poem.query.filter( Poem.content.contains(value)).all() # 获取全部诗句内容中包含”清明“诗句 if poem: # 如果查询到 context = { 'poem': poem # 诗的字段信息 } return render_template( 'search.html', **context, chart=page.render_embed(), host='/static/js', script_list=page.get_js_dependencies()) # 渲染页面 else: # 如果没有查询到 context = {'message': '没有找到相关内容'} return render_template('search.html', **context) # 渲染页面 else: # 普通搜索,直接搜索诗的名字 如:‘江南’ poem = Poem.query.filter_by(title=keyword).all() # 获取所有诗的名字为‘江南’的数据 if poem: # 如果查询的到 context = { 'poem': poem # 所有诗的名字为‘江南’字段信息 } return render_template( 'search.html', **context, chart=page.render_embed(), host='/static/js', script_list=page.get_js_dependencies()) # 渲染页面 else: # 如果没有查询的到 context = {'message': '没有找到相关内容'} return render_template('search.html', **context) #渲染页面
def create_charts(data): # data字典格式(三个表的情况下): # {'charcloud':[str:表一的前描述,str:表一的后描述,数据1,数据2,...,数据n],'...':[...]} html = '' page = Page() style = Style(width=900, height=600) # 本页面包含:1:所有字的词云charcloud(两个数据chars,values)、 # 表一: # 获取表一的数据 html_before = data['charcloud'][0] html_after = data['charcloud'][1] chars = data['charcloud'][2] values = data['charcloud'][3] wordcloud = WordCloud("唐诗用字云图", **style.init_style) wordcloud.add("字云", chars, values, word_size_range=[10, 100], shape='pentagon') java_script = wordcloud.render_embed() html += html_before + java_script + html_after page.add(wordcloud) # 表二: html_before = data['chartop10'][0] html_after = data['chartop10'][1] chars = data['chartop10'][2] values = data['chartop10'][3] bar = Bar("唐诗高频十字", **style.init_style) bar.add("柱状图", chars, values) java_script = bar.render_embed() html += html_before + java_script + html_after page.add(bar) # 表三: html_before = data['frequency×'][0] html_after = data['frequency×'][1] keys = data['frequency×'][2] values = data['frequency×'][3] line = Line("唐诗字频-字数", **style.init_style) line.add("字频--字数", keys, values, is_smooth=True, is_fill=True, area_opacity=0.2, is_datazoom_show=True, datazoom_type="both", datazoom_range=[0, 60], xaxis_interval=1, yaxis_formatter="字", xaxis_name="频次", yaxis_name="字数", xaxis_name_pos="end", yaxis_name_pos="end", is_more_utils=True) java_script = line.render_embed() html += html_before + java_script + html_after page.add(line) # 最后 script = page.get_js_dependencies() return html, script
def city_page(city): # 需要处理的数据 lan_list, job_list = DATA.get_kw_msg_of_city(city_name=city) kw_list = DATA.get_the_city_msg(city_name=city) kw_num = DATA.get_kw_num(city=city) lan_num, job_num = DATA.get_lan_job_num(city=city) # 生成数据图表 kw_bar_page = Page().add( bar_sssf(attr_v1=kw_list, chart_name=city + '各种职位总览-柱状图', v1_name='数量')) ## 对语言的分析柱状图与饼图 lan_bar_page = Page().add( bar_sssf(attr_v1=lan_list, chart_name=city + '各语言数量-柱状图', v1_name='语言')) lan_pie_page = Page().add( pie_yht(attr_v1=lan_list, chart_name='每种语言占总数占比-饼状图', v1_name='语言')) ## 对职位的分析柱状图与饼图 job_bar_page = Page().add( bar_sssf(attr_v1=job_list, chart_name=city + '各职位数量-柱状图', v1_name='职位')) job_pie_page = Page().add( pie_yht(attr_v1=job_list, chart_name='每种职位占总数占比-饼状图', v1_name='职位')) return render_template( 'city.html', title=city, kw_list=kw_list, lan_num=lan_num, job_num=job_num, top5_city=DATA.top5_city_name(), top5_lan=DATA.top5_lan_name(), top5_job=DATA.top5_job_name(), kw_bar_page=kw_bar_page.render_embed(), lan_bar_page=lan_bar_page.render_embed(), lan_pie_page=lan_pie_page.render_embed(), job_bar_page=job_bar_page.render_embed(), job_pie_page=job_pie_page.render_embed(), script_list=kw_bar_page.get_js_dependencies() + lan_bar_page.get_js_dependencies() + lan_pie_page.get_js_dependencies() + job_bar_page.get_js_dependencies() + job_pie_page.get_js_dependencies(), )
def recommendation(): page3 = Page() sca = scatter() page3.add(sca) return render_template('recommendation.html', myechart=page3.render_embed(), host=DEFAULT_HOST, script_list=page3.get_js_dependencies())
def index(): asset_count = Asset.query.count() # 总资产数 page = Page() # 生成页面对象 # 生成服务器图 webserver_pie = webserver(asset_count) # web服务器 os_pie = webos() # 操作系统 pl_pie = pl() # 开发语言 jsf_pie = jsf() # js框架 cms_pie = cms() #cms page.add([webserver_pie, os_pie, pl_pie, jsf_pie, cms_pie]) return render_template('cms/cms_index.html', chart=page.render_embed(), host='/static/front/js', total=asset_count, script_list=page.get_js_dependencies())
def virtualization(): page2 = Page() data_clound = data_cloud() page2.add(data_clound) _bar = force() page2.add(_bar) map = _map() page2.add(map) pie = _pie() page2.add(pie) return render_template('virtualization.html', myechart=page2.render_embed(), host=DEFAULT_HOST, script_list=page2.get_js_dependencies())
def stock(): page = Page() if request.method == 'POST': stock_num = request.form['stock_num'] if stock_num: kline = k_line(stock_num) page.add(kline) if kline == 0: error = "No Such Stock, Check First" return render_template('stock.html', error=error) normalline = nomoral_line(stock_num) page.add(normalline) return render_template('stock.html', myechart=page.render_embed(), host=DEFAULT_HOST, script_list=page.get_js_dependencies()) else: return render_template('stock.html') return render_template('stock.html')
def index(): stock_basics = pd.read_hdf(app.config['FIN_TECH_HDF5'], 'stock_basics', mode='r') area_count = stock_basics.groupby('area')['code'].count().reset_index() area_sum = stock_basics.groupby('area')['totalAssets'].sum().reset_index() value_count = list(area_count['code']) attr_count = list(area_count['area']) value_sum = list(area_sum['totalAssets'].astype(int)) attr_sum = list(area_sum['area']) map_count = Map("上市公司分布-公司数", width=1200, height=600) map_count.add("", attr_count, value_count, maptype='china', is_visualmap=True, visual_range=[0, 400], is_map_symbol_show=False, visual_text_color='#000') map_sum = Map("上市公司分布-公司市值", width=1200, height=600) map_sum.add("", attr_sum, value_sum, maptype='china', is_visualmap=True, visual_range=[10000000, 1000000000], is_map_symbol_show=False, visual_text_color='#000') page = Page() page.add(map_count) page.add(map_sum) # grid = Grid(width="100%") # grid.add(map_count, grid_left="60%") # grid.add(map_sum, grid_right="60%") return render_template( 'chart.html', myechart=page.render_embed(), host=app.config['REMOTE_HOST'], # my_option=json_dumps(page.options), script_list=page.get_js_dependencies())
def create_charts(data): style = Style(width=900, height=900) page = Page() html='' charts = GeoLines("丝绸之路", **style.init_style) data_eastnorth = [ ['西安市', '彬县'], ['彬县', '泾川县'], ['泾川县', '固原市'], ['固原市', '靖远县'], ['靖远县', '武威市'], ['武威市', '张掖市'] ] charts.add("东段北线", data_eastnorth, **style_geo) data_eastmid = [ ['西安市', '彬县'], ['彬县', '泾川县'], ['泾川县', '平凉市'], ['平凉市', '会宁县'], ['会宁县', '兰州市'], ['兰州市', '武威市'], ['武威市', '张掖市'] ] charts.add("东段中线", data_eastmid, **style_geo) data_eastsouth = [ ['西安市', '凤翔县'], ['凤翔县', '天水市'], ['天水市', '陇西县'], ['陇西县', '临夏市'], ['临夏市', '乐都县'], ['乐都县', '西宁市'], ['西宁市', '张掖市'] ] charts.add("东段南线", data_eastsouth, **style_geo) data_hexizoulang = [ ['张掖', '酒泉'], ['酒泉', '玉门'], ['玉门', '瓜州'] ] charts.add("河西走廊", data_hexizoulang, geo_cities_coords={ '张掖': [100.45, 38.93], '酒泉': [98.500685, 39.740023], '玉门': [97.055736, 40.296519], '瓜州': [95.793335, 40.530274] }, **style_geo) data_westnorth = [ ['瓜州', '哈密'], ['哈密', '伊川'], ['伊川', '吉木萨尔'], ['吉木萨尔', '乌鲁木齐'], ['乌鲁木齐', '伊宁'], ['伊宁', '碎叶'] ] charts.add("中段北道", data_westnorth, geo_cities_coords={ '瓜州': [95.793335, 40.530274], '哈密': [93.52294, 42.833441], '伊川': [91.435282, 43.430981], '吉木萨尔': [89.181374, 44.004888], '乌鲁木齐': [87.62214, 43.831179], '伊宁': [81.283092, 43.916546], '碎叶': [75.283092, 43.831179] }, **style_geo) data_westmid = [ ['瓜州', '敦煌'], ['敦煌', '玉门关'], ['玉门关', '高昌'], ['高昌', '焉耆'], ['焉耆', '库车'], ['库车', '阿克苏'], ['阿克苏', '喀什'], ['喀什', '大宛'] ] charts.add("中段中道",data_westmid, geo_cities_coords={ '瓜州': [95.793335, 40.530274], '敦煌': [94.6806, 40.148308], '玉门关': [93.871678, 40.360147], '高昌': [89.192459, 42.948971], '焉耆': [86.588696, 42.065708], '库车': [82.969034, 41.723448], '阿克苏': [80.258894, 41.175899], '喀什': [75.975982,39.542678], '大宛': [70.258894, 41.175899] }, **style_geo) data_westsouth = [ ['瓜州', '敦煌'], ['敦煌', '阳关'], ['阳关', '若羌县'], ['若羌县', '且丰县'], ['且丰县', '和田'], ['和田', '莎车'], ['莎车', '葱岭'] ] charts.add("中段南道", data_westsouth, geo_cities_coords={ '瓜州': [95.793335, 40.530274], '敦煌': [94.6806, 40.148308], '阳关': [94.060858, 39.940913], '若羌县': [89.060858, 39.940913], '且丰县': [86.560858, 38.540919], '和田': [79.933681, 37.121827], '莎车': [77.249562, 38.422871], '葱岭': [72.249562, 37.921827] }, **style_geo) page.add(charts) html=charts.render_embed() script = page.get_js_dependencies() return html, script
def pyecharts(request): """dashboard view""" # 工单数量统计 chart_dao = ChartDao() bar1 = Bar('SQL上线工单统计(数量)', width="100%") data = chart_dao.workflow_by_date(30) today = date.today() one_month_before = today - relativedelta(days=+30) attr = chart_dao.get_date_list(one_month_before, today) _dict = {} for row in data['rows']: _dict[row[0]] = row[1] value = [_dict.get(day) if _dict.get(day) else 0 for day in attr] bar1.add("月统计", attr, value, is_stack=False, legend_selectedmode='single') # 工单按组统计 pie1 = Pie('SQL上线工单统计(组)', width="100%") data = chart_dao.workflow_by_group(30) attr = [row[0] for row in data['rows']] value = [row[1] for row in data['rows']] pie1.add("月统计", attr, value, is_legend_show=False, is_label_show=True) # 工单按人统计 bar2 = Bar('SQL上线工单统计(用户)', width="100%") data = chart_dao.workflow_by_user(30) attr = [row[0] for row in data['rows']] value = [row[1] for row in data['rows']] bar2.add("月统计", attr, value, is_label_show=True) # SQL语句类型统计 pie2 = Pie("SQL上线工单统计(类型)", width="100%") data = chart_dao.sql_syntax() attr = [row[0] for row in data['rows']] value = [row[1] for row in data['rows']] pie2.add("", attr, value, is_label_show=True) # SQL查询统计(每日检索行数) line1 = Line("SQL查询统计", width="100%") attr = chart_dao.get_date_list(one_month_before, today) effect_data = chart_dao.querylog_effect_row_by_date(30) effect_dict = {} for row in effect_data['rows']: effect_dict[row[0]] = int(row[1]) effect_value = [effect_dict.get(day) if effect_dict.get(day) else 0 for day in attr] count_data = chart_dao.querylog_count_by_date(30) count_dict = {} for row in count_data['rows']: count_dict[row[0]] = int(row[1]) count_value = [count_dict.get(day) if count_dict.get(day) else 0 for day in attr] line1.add("检索行数", attr, effect_value, is_stack=False, legend_selectedmode='single', mark_point=["average"]) line1.add("检索次数", attr, count_value, is_stack=False, legend_selectedmode='single', is_smooth=True, mark_line=["max", "average"]) # SQL查询统计(用户检索行数) pie4 = Pie("SQL查询统计(用户检索行数)", width="100%") data = chart_dao.querylog_effect_row_by_user(30) attr = [row[0] for row in data['rows']] value = [int(row[1]) for row in data['rows']] pie4.add("月统计", attr, value, radius=[40, 75], is_legend_show=False, is_label_show=True) # SQL查询统计(DB检索行数) pie5 = Pie("SQL查询统计(DB检索行数)", width="100%") data = chart_dao.querylog_effect_row_by_db(30) attr = [row[0] for row in data['rows']] value = [int(row[1]) for row in data['rows']] pie5.add("月统计", attr, value, is_legend_show=False, is_label_show=True) # 可视化展示页面 page = Page() page.add(bar1) page.add(pie1) page.add(bar2) page.add(pie2) page.add(line1) page.add(pie4) page.add(pie5) myechart = page.render_embed() # 渲染配置 host = 'https://pyecharts.github.io/assets/js' # js文件源地址 script_list = page.get_js_dependencies() # 获取依赖的js文件名称(只获取当前视图需要的js) return render(request, "dashboard.html", {"myechart": myechart, "host": host, "script_list": script_list})
def create_charts(data): # data字典格式(三个表的情况下): # {'nouns':[str:表一的前描述,str:表一的后描述,数据1,数据2,...,数据n],'...':[...]} html = '' page = Page() style = Style(width=900, height=600) # 本页面包含:1:noun(两个数据noun,values)、 # 表一: # 获取表一的数据 html_before = data['nounfre'][0] html_after = data['nounfre'][1] keys = data['nounfre'][2] values = data['nounfre'][3] line = Line("唐诗词频--名词", **style.init_style) line.add("词频--名词", keys, values, is_smooth=True, is_fill=True, area_opacity=0.2, is_datazoom_show=True, datazoom_type="both", datazoom_range=[0, 60], xaxis_interval=1, xaxis_name="名词", yaxis_name="词频", xaxis_name_pos="end", yaxis_name_pos="end", is_more_utils=True) java_script = line.render_embed() html += html_before + java_script + html_after page.add(line) #表二 html_before = data['geofre'][0] html_after = data['geofre'][1] keys = data['geofre'][2] values = data['geofre'][3] line = Line("唐诗词频--地理名词", **style.init_style) line.add("词频--地理名词", keys, values, is_smooth=True, is_fill=True, area_opacity=0.2, is_datazoom_show=True, datazoom_type="both", datazoom_range=[0, 60], xaxis_interval=1, xaxis_name="地理名词", yaxis_name="词频", xaxis_name_pos="end", yaxis_name_pos="end", is_more_utils=True) java_script = line.render_embed() html += html_before + java_script + html_after page.add(line) # 表三 html_before = data['timefre'][0] html_after = data['timefre'][1] keys = data['timefre'][2] values = data['timefre'][3] line = Line("唐诗词频--地理名词", **style.init_style) line.add("词频--时间名词", keys, values, is_smooth=True, is_fill=True, area_opacity=0.2, is_datazoom_show=True, datazoom_type="both", datazoom_range=[0, 60], xaxis_interval=1, xaxis_name="时间名词", yaxis_name="词频", xaxis_name_pos="end", yaxis_name_pos="end", is_more_utils=True) java_script = line.render_embed() html += html_before + java_script + html_after page.add(line) # 表四 html_before = data['verbfre'][0] html_after = data['verbfre'][1] keys = data['verbfre'][2] values = data['verbfre'][3] line = Line("唐诗词频--动词", **style.init_style) line.add("词频--动词", keys, values, is_smooth=True, is_fill=True, area_opacity=0.2, is_datazoom_show=True, datazoom_type="both", datazoom_range=[0, 60], xaxis_interval=1, xaxis_name="动词", yaxis_name="词频", xaxis_name_pos="end", yaxis_name_pos="end", is_more_utils=True) java_script = line.render_embed() html += html_before + java_script + html_after page.add(line) # 表五 html_before = data['adjfre'][0] html_after = data['adjfre'][1] keys = data['adjfre'][2] values = data['adjfre'][3] line = Line("唐诗词频--xrc", **style.init_style) line.add("词频--形容词", keys, values, is_smooth=True, is_fill=True, area_opacity=0.2, is_datazoom_show=True, datazoom_type="both", datazoom_range=[0, 60], xaxis_interval=1, xaxis_name="形容词", yaxis_name="词频", xaxis_name_pos="end", yaxis_name_pos="end", is_more_utils=True) java_script = line.render_embed() html += html_before + java_script + html_after page.add(line) script = page.get_js_dependencies() return html, script
def dau(): # 构造Request和访问协议是否是https appDAUQuest = aop.api.UmengUappGetActiveUsersRequest() appNEWQuest = aop.api.UmengUappGetNewUsersRequest() #计算时间 now_date = datetime.now().strftime('%Y-%m-%d') start_date = (datetime.now() + timedelta(days=-30)).strftime('%Y-%m-%d') #创建字典 iosDAU = {} andDAU = {} allDAU = {} iosNEW = {} andNEW = {} allNEW = {} #IOS DAU respIOSDAU = appDAUQuest.get_response(None, appkey="5c76338bb465f50bc6001045", startDate=start_date, endDate=now_date, periodType="daily") for k in respIOSDAU['activeUserInfo']: iosDAU[k['date']] = k['value'] #IOS NEW respIOSNEW = appNEWQuest.get_response(None, appkey="5c76338bb465f50bc6001045", startDate=start_date, endDate=now_date, periodType="daily") for k in respIOSNEW['newUserInfo']: iosNEW[k['date']] = k['value'] #Android DAU respANDDAU = appDAUQuest.get_response(None, appkey="5c73a5e9f1f55699ab0000ef", startDate=start_date, endDate=now_date, periodType="daily") for k in respANDDAU['activeUserInfo']: andDAU[k['date']] = k['value'] #Android NEW respANDNEW = appNEWQuest.get_response(None, appkey="5c73a5e9f1f55699ab0000ef", startDate=start_date, endDate=now_date, periodType="daily") for k in respANDNEW['newUserInfo']: andNEW[k['date']] = k['value'] x, y = Counter(iosDAU), Counter(andDAU) allDAU = dict(x + y) x, y = Counter(iosNEW), Counter(andNEW) allNEW = dict(x + y) page = Page() #处理渲染 columns = list(allDAU.keys()) #设置DAU数据 data1 = list(iosDAU.values()) data2 = list(andDAU.values()) data3 = list(allDAU.values()) #设置NEW数据 data4 = list(iosNEW.values()) data5 = list(andNEW.values()) data6 = list(allNEW.values()) #设置柱状图的主标题与副标题 bar = Bar("DAU", "完美世界电竞App最近一个月的DAU") #添加柱状图的数据及配置项 bar.add("IOS", columns, data1, is_datazoom_show=True) bar.add("Android", columns, data2, is_datazoom_show=True) bar.add("全部", columns, data3, is_datazoom_show=True) line = Line("Line Chart Demo") line.add("全部", columns, data3, is_smooth=True) overlap = Overlap(height=500, width=1200) overlap.add(bar) overlap.add(line) #设置柱状图的主标题与副标题 bar = Bar("NEW USER", "完美世界电竞App最近一个月的新增用户") #添加柱状图的数据及配置项 bar.add("IOS", columns, data4, is_datazoom_show=True) bar.add("Android", columns, data5, is_datazoom_show=True) bar.add("全部", columns, data6, is_datazoom_show=True) line = Line("Line Chart Demo") line.add("全部", columns, data6, is_smooth=True) overlap2 = Overlap(height=500, width=1200) overlap2.add(bar) overlap2.add(line) page.add(overlap) page.add(overlap2) #生成本地文件(默认为.html文件) return render_template('bar.html', myechart=page.render_embed(), script_list=page.get_js_dependencies())
def home(): """ 主页信息 """ # 将要显示的数据 print('test') city_num_list = CITY_NUM_LIST[:100] kw_num_city_list = KW_NUM_OF_ALL_CITY_LIST[:100] lan_num_list = LAN_NUM_LIST job_num_list = JOB_NUM_LIST all_num = ALL_NUM # 生成相应的图表 top_10_city_page = Page() top_10_city_page.add( bar_ssdd( attr_v1_v2=kw_num_city_list[:10], chart_name='前十城市中语言数与职位数对比-折线图', v1_name='语言数量', v2_name='职位数量', )) top_10_city_map_page = Page() top_10_city_map_page.add( geo_qgtd(attr_v1=city_num_list[:10], chart_name='前十城市地理位置', v1_name='城市')) top_100_city_page = Page() top_100_city_page.add( bar_sssf(attr_v1=city_num_list, chart_name='前百城市职位数量-柱状图', v1_name='职位数')) top_100_city_map_page = Page() top_100_city_map_page.add( geo_qgtd(attr_v1=city_num_list[:100], chart_name='前百城市地理位置', v1_name='城市')) lan_page = Page() lan_page.add( pie_yht(attr_v1=lan_num_list, chart_name='各种语言占总数比值-饼图', v1_name='语言')) job_page = Page() job_page.add( pie_yht(attr_v1=job_num_list, chart_name='各种职位占总数比值-饼图', v1_name='职位')) return render_template( 'index.html', title='首页', all_num=all_num, top5_city=DATA.top5_city_name(), top5_lan=DATA.top5_lan_name(), top5_job=DATA.top5_job_name(), top_10_city=top_10_city_page.render_embed(), top_10_city_map_page=top_10_city_map_page.render_embed(), top_100_city_page=top_100_city_page.render_embed(), top_100_city_map_page=top_100_city_map_page.render_embed(), lan_page=lan_page.render_embed(), job_page=job_page.render_embed(), script_list=top_10_city_page.get_js_dependencies() + top_100_city_page.get_js_dependencies() + lan_page.get_js_dependencies() + job_page.get_js_dependencies() + top_10_city_map_page.get_js_dependencies() + top_100_city_map_page.get_js_dependencies(), )
def events(): #构造Request和访问协议是否是https req = aop.api.UmengUappEventListRequest() #得到时间 get_date = request.args.get("date") if is_valid_date(get_date) == False: now_date = datetime.now().strftime('%Y-%m-%d') else: now_date = get_date AndEvents = {} IosEvents = {} allEvents = {} resp = req.get_response(None, appkey="5c73a5e9f1f55699ab0000ef", startDate=now_date, endDate=now_date, perPage=30, page=1, version="") AndEvents[now_date] = {} for k in resp['eventInfo']: AndEvents[now_date][k['displayName']] = k['count'] resp = req.get_response(None, appkey="5c76338bb465f50bc6001045", startDate=now_date, endDate=now_date, perPage=30, page=1, version="") IosEvents[now_date] = {} for k in resp['eventInfo']: IosEvents[now_date][k['displayName']] = k['count'] x, y = Counter(AndEvents[now_date]), Counter(IosEvents[now_date]) allEvents[now_date] = {} allEvents[now_date] = dict(x + y) resIosEvents = {} resAndEvents = {} for k in allEvents[now_date].keys(): if k not in AndEvents[now_date]: resAndEvents[k] = 0 else: resAndEvents[k] = AndEvents[now_date][k] if k not in IosEvents[now_date]: resIosEvents[k] = 0 else: resIosEvents[k] = IosEvents[now_date][k] page = Page() #处理渲染 columns = list(allEvents[now_date].keys()) #设置DAU数据 data1 = list(resIosEvents.values()) data2 = list(resAndEvents.values()) data3 = list(allEvents[now_date].values()) #设置柱状图的主标题与副标题 bar = Bar("EVENTS", "完美世界电竞App的事件消息数:" + now_date) #添加柱状图的数据及配置项 bar.add("IOS", columns, data1, is_more_utils=True, xaxis_label_textsize=10, is_datazoom_show=True) bar.add("Android", columns, data2, is_more_utils=True, xaxis_label_textsize=10) bar.add("全部", columns, data3, is_more_utils=True, xaxis_label_textsize=10, xaxis_interval=-10, xaxis_rotate=45) overlap = Overlap(height=600, width=1600) overlap.add(bar) page.add(overlap) #生成本地文件(默认为.html文件) return render_template('events.html', myechart=page.render_embed(), script_list=page.get_js_dependencies())
def create_charts(data): page = Page() style = Style(width=900, height=900) html = '' html_before = data['full'][0] html_after = data['full'][1] nodes_full = data['full'][2] links_full = data['full'][3] category=data['full'][4] chart = Graph("全唐诗人关系图", **style.init_style) chart.add("", nodes_full, links_full,category, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=True, line_curve=0.4, label_text_color="#000", graph_layout='circular', label_emphasis_textcolor='#000') java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) # style = Style(width=900, height=600) html_before = data['early'][0] html_after = data['early'][1] nodes_early = data['early'][2] links_early = data['early'][3] chart = Graph("初唐诗人关系图", **style.init_style) chart.add("", nodes_early, links_early, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=False, line_curve=0.2, label_text_color=None) java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) html_before = data['middle'][0] html_after = data['middle'][1] nodes_middle = data['middle'][2] links_middle = data['middle'][3] chart = Graph("中唐诗人关系图", **style.init_style) chart.add("", nodes_middle, links_middle, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=False, line_curve=0.2, label_text_color=None) java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) html_before = data['high'][0] html_after = data['high'][1] nodes_high = data['high'][2] links_high = data['high'][3] chart = Graph("盛唐诗人关系图", **style.init_style) chart.add("", nodes_high, links_high, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=False, line_curve=0.2, label_text_color=None) java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) html_before = data['late'][0] html_after = data['late'][1] nodes_late = data['late'][2] links_late = data['late'][3] chart = Graph("晚唐诗人关系图", **style.init_style) chart.add("", nodes_late, links_late, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=False, line_curve=0.2, label_text_color=None) java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) # 最后 script = page.get_js_dependencies() return html, script
def pyecharts(request): # 工单数量统计 bar1 = Bar('SQL上线工单统计(数量)', width="100%") data = chart_dao.workflow_by_date(1) begin_date = (date.today() - relativedelta(months=+1)).strftime("%Y-%m-%d") attr = chart_dao.get_date_list(begin_date, date.today().strftime("%Y-%m-%d")) dict = {} for row in data['rows']: dict[row[0]] = row[1] value = [dict.get(day) if dict.get(day) else 0 for day in attr] bar1.add("月统计", attr, value, is_stack=False, legend_selectedmode='single') # 工单按组统计 pie1 = Pie('SQL上线工单统计(组)', width="100%") data = chart_dao.workflow_by_group(1) attr = [row[0] for row in data['rows']] value = [row[1] for row in data['rows']] pie1.add("月统计", attr, value, is_legend_show=False, is_label_show=True) # 工单按人统计 bar2 = Bar('SQL上线工单统计(用户)', width="100%") data = chart_dao.workflow_by_user(1) attr = [row[0] for row in data['rows']] value = [row[1] for row in data['rows']] bar2.add("月统计", attr, value, is_label_show=True) # SQL语句类型统计 pie2 = Pie("SQL上线工单统计(类型)", width="100%") data = chart_dao.sql_syntax() attr = [row[0] for row in data['rows']] value = [row[1] for row in data['rows']] pie2.add("", attr, value, is_label_show=True) # SQL执行情况统计 pie3 = Pie("SQL上线工单统计(Inception)", width="100%") data = InceptionDao().statistic() attr = data['column_list'] if data['column_list']: value = [int(row) for row in data['rows'][0]] else: value = [] pie3.add("", attr, value, is_legend_show=False, is_label_show=True) # SQL查询统计(每日检索行数) line1 = Line("SQL查询统计", width="100%") begin_date = (date.today() - relativedelta(months=+1)).strftime("%Y-%m-%d") attr = chart_dao.get_date_list(begin_date, date.today().strftime("%Y-%m-%d")) effect_data = chart_dao.querylog_effect_row_by_date(1) effect_dict = {} for row in effect_data['rows']: effect_dict[row[0]] = int(row[1]) effect_value = [ effect_dict.get(day) if effect_dict.get(day) else 0 for day in attr ] count_data = chart_dao.querylog_count_by_date(1) count_dict = {} for row in count_data['rows']: count_dict[row[0]] = int(row[1]) count_value = [ count_dict.get(day) if count_dict.get(day) else 0 for day in attr ] line1.add("检索行数", attr, effect_value, is_stack=False, legend_selectedmode='single', mark_point=["average"]) line1.add("检索次数", attr, count_value, is_stack=False, legend_selectedmode='single', is_smooth=True, mark_line=["max", "average"]) # SQL查询统计(用户检索行数) pie4 = Pie("SQL查询统计(用户检索行数)", width="100%") data = chart_dao.querylog_effect_row_by_user(1) attr = [row[0] for row in data['rows']] value = [int(row[1]) for row in data['rows']] pie4.add("月统计", attr, value, radius=[40, 75], is_legend_show=False, is_label_show=True) # SQL查询统计(DB检索行数) pie5 = Pie("SQL查询统计(DB检索行数)", width="100%") data = chart_dao.querylog_effect_row_by_db(1) attr = [row[0] for row in data['rows']] value = [int(row[1]) for row in data['rows']] pie5.add("月统计", attr, value, is_legend_show=False, is_label_show=True) # 可视化展示页面 page = Page() page.add(bar1) page.add(pie1) page.add(bar2) page.add(pie2) page.add(pie3) page.add(line1) page.add(pie4) page.add(pie5) myechart = page.render_embed() # 渲染配置 host = 'https://pyecharts.github.io/assets/js' # js文件源地址 script_list = page.get_js_dependencies() # 获取依赖的js文件名称(只获取当前视图需要的js) return render(request, "dashboard.html", { "myechart": myechart, "host": host, "script_list": script_list })