def index(request): targetProvinceName = 0 additionProvinceName = {"四川"} gotProvinceName = {"四川"} additionMapName = {"四川"} v = pneumonia(targetProvinceName, additionProvinceName, gotProvinceName, additionMapName) tab = Tab("疫情地图豪华定制版") tab.add(v.getSichuanMap("currentConfirmedCount", "现存确诊"), "四川现存") tab.add(v.getSichuanMap("confirmedCount", "累计确诊"), "四川累计") tab.add(v.getSichuanTable(), "四川表格") tab.add(v.getChinaMap("currentConfirmedCount", "现存确诊"), "中国现存") tab.add(v.getChinaMap("confirmedCount", "累计确诊"), "中国累计") tab.add(v.getProvinceTable(), "各省表格") tab.add(v.getWorldMap("currentConfirmedCount", "现存确诊"), "世界现存") tab.add(v.getWorldMap("confirmedCount", "累计确诊"), "世界累计") tab.add(v.getWorldTable(), "世界表格") return HttpResponse(tab.render_embed())
def plot_all(data): bonds_data = raw_data_process(data,rate_columns_names="票面利率(发行时)\r\n[单位] %") bonds_data['省份'] = bonds_data['省份'].fillna("其他") coupon_rate = coupon_rate_summary(bonds_data,group_name="Wind债券二级分类") province_analysis = province_data_format(category_analysis(bonds_data, "省份")).round(4) industry_analysis = category_analysis(bonds_data, "所属申万行业名称\r\n[行业级别] 一级行业") province_analysis_2 = province_data_format(category_analysis(bonds_data, "省份",counts=False)).round(4) industry_analysis_2 = category_analysis(bonds_data, "所属申万行业名称\r\n[行业级别] 一级行业",counts=False) ranks_analysis = rank(bonds_data) hotspot_analysis = usage_analysis(bonds_data) daily, cummulative = daily_issue_analysis(bonds_data) tc,tq = expireTime(bonds_data) tab = Tab(page_title="疫情防控债统计分析") tab.add(table_base(coupon_rate), "利率统计") tab.add(rate_histogram_plot(bonds_data['票面利率(%)'].replace("--", np.nan).astype(np.float)), "利率分布直方图") tab.add(province_analysis_plot(province_analysis), "发行省份统计(数量)") tab.add(province_analysis_plot(province_analysis_2),"发行省份统计(金额)") tab.add(issuer_industry_plot(industry_analysis), "发行行业统计(数量)") tab.add(issuer_industry_plot(industry_analysis_2),"发行行业统计(金额)") tab.add(word_clouds(hotspot_analysis), "资金用途热点") tab.add(pie_plot(ranks_analysis.drop(["已公布评级","合计"])), "评级统计") tab.add(pie_plot(tc),"债券期限统计(数量)") tab.add(pie_plot(tq),"债券期限统计(金额)") tab.add(daily_issue_plot(daily,cummulative),"每日发行状况统计") # table province_analysis['占比'] = (province_analysis['占比'].round(2)).astype(str)+"%" province_analysis = province_analysis.sort_values(by='数量',ascending=False).astype(str) tab.add(table_base(province_analysis),"发行省份统计表(数量)") province_analysis_2['占比'] = (province_analysis_2['占比'].round(2)).astype(str)+"%" province_analysis_2 = province_analysis_2.sort_values(by='金额(亿)',ascending=False).astype(str) tab.add(table_base(province_analysis_2),"发行省份统计表(金额)") industry_analysis.index.name = "行业(申万)" industry_analysis["占比"] = (industry_analysis['占比']*100).round(2).astype('str')+"%" industry_analysis = industry_analysis.sort_values(by='数量',ascending=False) tab.add(table_base(industry_analysis),"发行行业统计表(数量)") industry_analysis_2.index.name = "行业(申万)" industry_analysis_2["占比"] = (industry_analysis_2['占比']*100).round(2).astype('str')+"%" industry_analysis_2 = industry_analysis_2.sort_values(by='金额(亿)',ascending=False) tab.add(table_base(industry_analysis_2),"发行行业统计表(金额)") hotspot_analysis_df = pd.DataFrame(hotspot_analysis).rename(columns={0:"关键词",1:"权重"}).set_index("关键词").round(4) tab.add(table_base(hotspot_analysis_df),"热点统计表") tab.add(table_base(ranks_analysis),"债券评级统计表") t = pd.concat([tc.rename("数量"),tq.rename("总金额(亿)")],axis=1).round(2) tab.add(table_base(t),"债券期限统计表") df = pd.concat([daily,cummulative],axis=1).round(2) df.index = df.index.date.astype(str) df.index.name = "日期" tab.add(table_base(df),"每日发行状况统计表") return tab
}, { "min": int(max(job_num_list) / 5) * 4, "max": max(job_num_list) }, ]))) return c if __name__ == '__main__': # area = input("please enter the area:") # jobkey = input("please enter the jobkey:") area = "上海" jobkey = "Java" data_exp = GetExpData(area, jobkey) ex_list, ex_num_list = data_exp.get_data() data_tem = GetTemData(area, jobkey) tem_list, tem_num_list = data_tem.get_data() data_area = GetAreaData(jobkey) area_list, job_num_list = data_area.get_data() data_pay = GetPayData(area, jobkey) pay_list, range_list = data_pay.get_data() tab = Tab() tab.add(pie_radius(ex_list, ex_num_list), "工作经验") tab.add(bar_base(pay_list, range_list), "工资待遇") tab.add(wordcloud_base(tem_list, tem_num_list), "工作福利") tab.add(map_visualmap(area_list, job_num_list), "全国岗位数量") tab.render()
def draw_line_charts(input_data,input_data2,canshu =[],path=''): canshu_list = [] max0 = int(max(input_data[canshu].max())*1.001) min0 = int(min(input_data[canshu].min())*0.995) print(max0,min0) for i in canshu: canshu_dict0 = {} canshu_dict0[i] = input_data[i] canshu_list.append(canshu_dict0) print(input_data.keys()) print(input_data.tail(100)) input_data['candle_begin_time'] = pd.to_datetime(input_data['candle_begin_time']) time_list = input_data['candle_begin_time'].apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S')).values.tolist() tab = Tab() line_base = Line(init_opts=opts.InitOpts(width="1500px", height="700px", theme=ThemeType.DARK)).add_xaxis(time_list) line_base.add_yaxis(series_name="close:", y_axis=input_data['close'].values, is_symbol_show=False, color="#FF0000") line_base.set_global_opts( datazoom_opts=[opts.DataZoomOpts(range_start=95, range_end=100,), opts.DataZoomOpts( type_="inside", range_start=95, range_end=100, )], title_opts=opts.TitleOpts(title="资金曲线变化"), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), yaxis_opts=opts.AxisOpts( is_scale=True, axislabel_opts=opts.LabelOpts(is_show=False), axisline_opts=opts.AxisLineOpts(is_show=False), axistick_opts=opts.AxisTickOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=False), ), legend_opts=opts.LegendOpts(is_show=True) ) for ix,v in enumerate(canshu_list): v0:str value0:dict for k,v0 in v.items(): name =k value0 = v0 data0 = pd.DataFrame(value0) data0.fillna(method='bfill',inplace=True) # print(data0) line_base.add_yaxis( series_name=name, y_axis=data0.values.tolist(), yaxis_index=2, linestyle_opts=opts.LineStyleOpts(), label_opts=opts.LabelOpts(is_show=False), ) line_base.extend_axis( yaxis=opts.AxisOpts( name="资金情况", name_location="start", type_="value", max_= max0, min_= min0, is_inverse=False, axistick_opts=opts.AxisTickOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=False),)) tab.add(line_base,'资金变化') table0 = Table().add(list(input_data2.columns), input_data2.values.tolist()).set_global_opts( title_opts=ComponentTitleOpts(title="策略统计", subtitle=str(dt.datetime.now()))) table0.add_js_funcs(''' document.write("<p style='color:#FF0000;'> 注释:none </p>" ''') tab.add(table0,'策略统计表') html0 =tab.render(path) if os.path.exists(html0): print("ok!保存在:") print(html0) else: print('保存失败!')
def line_detial_page(cpu, memory, upFlow, downFlow, fps, battery) -> Page: line1 = line_cpu(cpu) line2 = line_memory(memory) line3 = line_upflow(upFlow) table1 = table_base(data[0]) page = (Page().add(table1)) return page if __name__ == '__main__': print("----" * 20) dataFile = readInfo("../info/info.pickle") data = dataAnalysis(dataFile) monkeyLog = monkeyLogAnalysis(data) detial = line_detial_grid(cpu=data[1], memory=data[2], upFlow=data[3], downFlow=data[4], fps=data[5], battery=data[6]) tab = Tab() tab.add(table_base(data[0]), "汇总信息") tab.add(detial, "详细信息") tab.add(table_traces(monkeyLog), "日志记录") tab.render()
def s_5(): with open(r'cus.csv', 'r') as f: reader = csv.reader(f) result = list(reader) cus_list = [i[0] for i in result] total_list = [float(i[1]) for i in result] c = (EffectScatter(init_opts=opts.InitOpts( width='1200px', height='800px')).add_xaxis(cus_list).add_yaxis( "交易次数", total_list, label_opts=opts.LabelOpts(is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="本年度交易次数顾客排名分析-TOP20"), xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts( is_show=True)), yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts( is_show=True)), )) return c tab = Tab() tab.add(liquid_0(), "年度关键指标") tab.add(line_1(), "交易总额") tab.add(line_2(), "交易次数") tab.add(pie_3(), "交易种类") tab.add(s_4(), "省份排名分析") tab.add(s_5(), "顾客排名分析") tab.render("tab_base.html") # In[ ]:
def dong_scatter3(qian_n=10, data={}, data2=[], info='', print_data=[0, 0, 0], path0=''): from pyecharts import options as opts from pyecharts.commons.utils import JsCode from pyecharts.charts import Scatter, Timeline, Line, Page, Tab from pyecharts.components import Table # endlist = ['canshu', 'celue_name', '预测_s_Time', '最终预测值1', 'hg最终预测值1', # '未来end_3', '未来max_back_3', '未来sharp_rate_3', '未来trade_nums_3', '未来win_rate_3'] data['aim'] = data['canshu'] + data['celue_name'] dict0 = { 'hg最终预测值1': '回归=预测值', '最终预测值1': '分类=预测值', '预测_s_Time': 's_Time', '未来end_3': '未来=月终收益', '未来max_back_3': '未来=最大回撤', '未来sharp_rate_3': '未来=夏普率', '未来trade_nums_3': '未来=交易次数', '未来win_rate_3': '未来=胜率' } data.rename(columns=dict0, inplace=True) data = data.applymap(lambda x: round(x, 3) if isinstance(x, float) else x) # print(data.columns) # print(data.tail()) title = f'动态图:{qian_n}:' df = data # data['回归=预测值'] = data['回归=预测值'].apply(lambda x: int(x)) # df['未来=月终收益']=df['未来=月终收益'].apply(lambda x: int(x)) # df['回归=预测值']=df['回归=预测值'].apply(lambda x: int(x)) df['s_Time'] = pd.to_datetime( df['s_Time']) # .apply(lambda x:x.strftime(format="%Y-%m-%d")) df.sort_values(by=['s_Time'], ascending=True, inplace=True) tl = Timeline() tl_fl = Timeline() timelist = list(set(df['s_Time'].tolist())) # sorted(timelist) # df_date = [time.strftime('%Y-%m-%d',time.localtime(i/1000000000) ) for i in timelist] # print(df_date) tjdf = pd.DataFrame() timelist = sorted(timelist) # 时间散点图 df_zong = pd.DataFrame() for k, i in enumerate(timelist): df1 = df[df['s_Time'] == i] df0 = df1[df1['分类=预测值'] == df1['分类=预测值'].max()] tjindex = [x for x in list(df.keys()) if str(x).startswith('未来')] # print(df[df['s_Time']==i][tjindex].mean()) print(i) df0.sort_values(by=['回归=预测值'], ascending=True, inplace=True) print(df0.tail(30)) print(df0.shape) df0_ = df0.iloc[-1 * qian_n:] tjdf[i] = df0_[tjindex].mean() df_zong = df_zong.append(df0_) xdata = [t for t in df0['回归=预测值'].values.tolist()] yd1 = df0[['未来=月终收益', '回归=预测值', 'aim']] if yd1.shape[0] > qian_n: ydata1 = yd1.iloc[:].values.tolist() ydata2 = yd1.iloc[-1 * qian_n:].values.tolist() min_pre = yd1.iloc[-1 * qian_n:]['回归=预测值'].mean() max_pre = yd1.iloc[-1 * qian_n:]['回归=预测值'].max() else: ydata1 = yd1.values.tolist() # ydata2 = yd1.values.tolist() min_pre = df0['回归=预测值'].mean() max_pre = df0['回归=预测值'].max() xdata2 = [t for t in df1['分类=预测值'].values.tolist()] yd2 = df1[['未来=月终收益', '分类=预测值', 'aim']].values.tolist() # print(ydata) Scatter0 = ( Scatter().add_xaxis(xdata).add_yaxis( '未来=月终收益', ydata1, label_opts=opts.LabelOpts(is_show=False, ), ) # .add_yaxis('未来=月终收益', ydata2, label_opts=opts.LabelOpts(is_show=False, ), symbol='triangle') .set_global_opts( xaxis_opts=opts.AxisOpts( name='预测值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), yaxis_opts=opts.AxisOpts( name='真实值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), title_opts=opts.TitleOpts(title=f"{title}==:{i}", pos_left=30), tooltip_opts=opts.TooltipOpts(formatter=JsCode( "function (params) { return '==真实:'+params.value[1] +' <br/>== 预测:'+ params.value[2]+' <br/>== 策略:'+ params.value[3];}" ), ), visualmap_opts=opts.VisualMapOpts(min_=min_pre, max_=max_pre), )) min_pre = df0['未来=月终收益'].mean() max_pre = df0['未来=月终收益'].max() Scatter1 = (Scatter().add_xaxis(xdata2).add_yaxis( '未来=月终收益', yd2, label_opts=opts.LabelOpts(is_show=False, ), ).set_global_opts( xaxis_opts=opts.AxisOpts( name='预测值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), yaxis_opts=opts.AxisOpts( name='真实值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), title_opts=opts.TitleOpts(title=f"{title}==:{i}", pos_left=30), tooltip_opts=opts.TooltipOpts(formatter=JsCode( "function (params) { return '==真实:'+params.value[1] +' <br/>== 预测:'+ params.value[2]+' <br/>== 策略:'+ params.value[3];}" ), ), visualmap_opts=opts.VisualMapOpts(min_=min_pre, max_=max_pre), )) tl.add(Scatter0, f"{i}") tl_fl.add(Scatter1, f"{i}") tjdf.fillna(0, inplace=True) tjdf = tjdf.applymap(lambda x: round(x, 3) if isinstance(x, float) else x) # print(tjdf) # exit() tl2 = Timeline() for wl in tjdf.index: wl0 = tjdf.loc[wl] # print(wl0) line = Line().add_xaxis(list(wl0.index)).add_yaxis(wl, wl0.values.tolist()) \ .set_global_opts(title_opts=opts.TitleOpts(title=f'前{qian_n}名策略\n统计量:{wl}—变化', pos_left=30)) tl2.add(line, wl) # 统计表格 talble = Table() # [t.strftime(format="%Y-%m-%d")for t in tjdf.keys()] tjdf.columns = tjdf.columns.map(lambda x: x.strftime(format="%Y-%m-%d")) tjdf['统计量名称'] = tjdf.index tjdf['平均总计'] = tjdf.mean(axis=1) # print(tjdf['总计']) # exit() # print(tjdf.values) tjdf = tjdf.applymap(lambda x: round(x, 3) if isinstance(x, float) else x) tjdf_columns = list(tjdf.keys())[-2:] + list(tjdf.keys())[:-2] tjdf = tjdf[tjdf_columns] talble.add(list(tjdf.keys()), tjdf.values.tolist()).set_global_opts( title_opts=opts.ComponentTitleOpts(title=f"前{qian_n}名策略的真实未来,的历史统计表格")) # 策略推荐表格 talble2 = Table() tjcelue_data = df[df['s_Time'] == timelist[-1]][[ 's_Time', 'canshu', 'celue_name', '分类=预测值', '回归=预测值' ]] tjcelue_data = tjcelue_data[tjcelue_data['分类=预测值'].notnull()] tjcelue_data.sort_values(by='分类=预测值', ascending=True, inplace=True) tjcelue_data = tjcelue_data.iloc[-1 * qian_n:] talble2.add( tjcelue_data.columns.tolist(), tjcelue_data.values.tolist()).set_global_opts( title_opts=opts.ComponentTitleOpts(title=f"推荐前{qian_n}名策略")) talble3 = Table() headers_list = ['介绍:', '本次筛选个数', '过滤因子'] match_df = [print_data] talble3.add(headers_list, match_df).set_global_opts( title_opts=opts.ComponentTitleOpts(title=f"整体介绍")) talble4 = Table() new_columns = list(data2.keys()) newdata = data2.values.tolist() talble4.add(new_columns, newdata).set_global_opts(title_opts=opts.ComponentTitleOpts( title=f"逐月—策略详情:文件位置:" + path0.split('\\')[0])) tab0 = Tab() tab0.add(tl, '回归') tab0.add(tl_fl, '分类') tab0.add(tl2, '逐月统计图') tab0.add(talble, '逐月统计表格') tab0.add(talble2, '最新月推荐策略') tab0.add(talble3, '备注描述') tab0.add(talble4, '每月策略详情表') tab0.render(path0 + f"{info}.html") print(path0 + f"{info}.html") return df_zong
def map_world2() -> Map: c = (Map().add("2016年女性性自杀率(每10万人)", [list(z) for z in zip(df1["国家"], df1["女性自杀率"])], "world").set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="2016年女性自杀率"), visualmap_opts=opts.VisualMapOpts(min_=0, max_=30), )) return c map_world2().render() tab = Tab() tab.add(map_world(), "2016年总自杀率") tab.add(map_world1(), "2016年男性自杀率") tab.add(map_world2(), "2016年女性自杀率") tab.render('p2.html') @app.route('/', methods=['GET']) def get_out(): data_str = df.to_html() regions_available = regions_available_loaded # 下拉选单有内容 return render_template( 'p1.html', the_res=data_str, # 表 the_select_region=regions_available)
def anylize_to_html_01(data={}, info=''): from pyecharts import options as opts from pyecharts.commons.utils import JsCode from pyecharts.charts import Scatter, Bar, Timeline, Line, Page, Tab from pyecharts.components import Table tab0 = Tab() data.loc[(data['max_back_1'] != 0), '赢撤比'] = -1 * data['end_1'] / data['max_back_1'] data.loc[(data['max_back_1'] == 0), '赢撤比'] = 0 data = data[data['end_1'] != 0] clm = list(set(data['celue_name'].tolist())) print(clm) title = f'所有参数的,每个指标的统计状态:' tjdf = pd.DataFrame() i = 0 tj_index = { 'end_1': '最终收益', 'sharp_rate_1': '夏普率', 'max_back_1': '最大回撤', 'win_rate_2': '胜率', 'trade_nums_1': '交易次数', 'profit_days_1': '盈利天数', '赢撤比': '赢撤比' } s_tj_index = [] for clm0 in clm: print(clm0) df = data[data['celue_name'] == clm0].copy() for k, v in df.groupby('para1'): print(k) index_0 = i + 1 i = i + 1 tjdf.loc[index_0, 'para1'] = k tjdf.loc[index_0, 'clm'] = clm0 for tj_ix in tj_index.keys(): tjdf.loc[index_0, tj_index[tj_ix]] = v[tj_ix].mean() tjdf.loc[index_0, '赢撤比2'] = -1 * v['end_1'].mean( ) / v['max_back_1'].mean() if v['max_back_1'].mean() != 0 else 0 print(tjdf) print(tjdf.keys()) tj_index2 = list(tjdf.keys()) tj_index2.remove('para1') tj_index2.remove('clm') clm2 = tj_index2 for x, clm0 in enumerate(clm): df0 = tjdf[tjdf['clm'] == clm0].copy() tl = Timeline() for k, i in enumerate(tj_index2): xdata, ydata1 = df0['para1'], df0[['para1', i]] print(xdata) print(ydata1) # exit() bar0 = (Bar().add_xaxis(xdata.tolist()).add_yaxis( '均值', ydata1.values.tolist(), label_opts=opts.LabelOpts(is_show=False, ), ).set_global_opts( xaxis_opts=opts.AxisOpts( offset=0, name='参数名:', type_="value", is_show=True, axistick_opts=opts.AxisTickOpts(is_show=True)), yaxis_opts=opts.AxisOpts( offset=0, name='均值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), title_opts=opts.TitleOpts(title=f"{title}==:{i}"), legend_opts=opts.LegendOpts(pos_right=True), tooltip_opts=opts.TooltipOpts(formatter=JsCode( "function (params) { return '==para1:'+params.value[0] +' <br/>== 指标:'+ params.value[1]}" ), ), )) tl.add(bar0, f"{i}") tab0.add(tl, clm0) for x, clm0 in enumerate(clm2): tl = Timeline() tjdf0 = tjdf[tjdf['最终收益'] != 0].copy() tjdf0.sort_values(clm0, ascending=True, inplace=True) df0 = tjdf0.iloc[-1 * int(tjdf0.shape[0] * 0.12):].copy() index_list = list(df0.keys()) index_list.remove('clm') df0 = df0[index_list] for k, i in enumerate(index_list): xdata, ydata1 = df0['para1'], df0[[i, 'para1']] print(ydata1) sca0 = (Scatter().add_xaxis(xdata.tolist()).add_yaxis( '分布值', ydata1.values.tolist(), label_opts=opts.LabelOpts(is_show=False, ), ).set_global_opts( xaxis_opts=opts.AxisOpts( offset=0, name='参数名:', type_="value", is_show=True, axistick_opts=opts.AxisTickOpts(is_show=True)), yaxis_opts=opts.AxisOpts( offset=0, name='分布值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), title_opts=opts.TitleOpts(title=f"{title}==:{i}"), legend_opts=opts.LegendOpts(pos_right=True), tooltip_opts=opts.TooltipOpts(formatter=JsCode( "function (params) { return '==para1:'+params.value[0] +' <br/>== 指标:'+ params.value[1]}" ), ), )) tl.add(sca0, f"{i}") tab0.add(tl, clm0) tab0.render(f"{info}.html") print(f"{info}.html") return
def tab(filename="info"): ''' 分页组件 ''' tab = Tab() tab.add(liquid_data_precision("111"), "前日留存") tab.add(bar_datazoom_slider("222"), "分端留存") tab.add(table_base("222"), "明细") tab.add(line_markpoint("222"), "人群留存") tab.add(pie_rosetype("222"), "城市") tab.add(grid_mutil_yaxis("222"), "新增留存") tab.render_notebook() tab.render('{}.html'.format(filename))
line = (Line() .add_xaxis(xaxis_data=x_axis_data) .add_yaxis(series_name=legend_name, y_axis=y_axis_data, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min")]) ) ) return line """建立看板,可切换不同的折线图进行观察,因为后面要添加多张折线图 """ tab = Tab() # 逐个创建新的曲线并添加至tab看板下 for weather_key, weather_value in weather_dict.items(): # 把weather_key中的下划线换成空格呈现在最终的折线图中 weather_key_modified = weather_key.replace("_", " ") tab.add( chart=create_line(x_axis_data=month, y_axis_data=weather_value, legend_name=weather_key_modified), tab_name=weather_key_modified ) # 保存路径 resultPath = "./result" if not os.path.exists(path=resultPath): os.mkdir(path=resultPath) # 保存文件名 resultFileName = "weather_tab.html" # 执行多折线图看板的保存 tab.render(path=os.path.join(resultPath, resultFileName))
def index(): tab = Tab() tab.add(grid_horizontal(), "Income_Group") tab.add(grid_horizontal1(), "Region") tab.add(timeline_map(), "map") tab.add(bar_base(), "map-data story") tab.add(timeline_pie(), "pie") tab.add(line_base(), "pie-data story") return Markup(tab.render_embed())
def plot_performance_overview(dict_results, plot_tymod, p): if plot_tymod == "pic": figs = {} for k, v in dict_results.items(): v = v.unstack() series = v.index.get_level_values(0).unique() if isinstance( v.index, pd.MultiIndex) else [k] c = 3 r = np.ceil(len(series) / c) fig = plt.figure(figsize=(8, 6)) plt.subplots_adjust(hspace=0.3) for i, _s in enumerate(series): _data = v.loc[_s] if isinstance(v.index, pd.MultiIndex) else v X, Y = np.meshgrid(_data.index, _data.columns, indexing='ij') Z = _data.values pos = int(r * 100 + c * 10 + (i + 1)) ax = fig.add_subplot(pos, projection='3d') ax.plot_surface(X, Y, Z, color='b') ax.set_title("%s" % _s, fontdict={"size": 8}) figs[k] = fig fig.savefig("%s_%s.png" % (p, k)) return figs elif plot_tymod == 'dyn-3d': results = {} for k, perf in dict_results.items(): perf = perf.unstack() c = (Surface3D(init_opts=opts.InitOpts( width="1000px", height="500px")).set_global_opts( title_opts=opts.TitleOpts(title="绩效-曲面波图(%s)" % k), visualmap_opts=opts.VisualMapOpts( max_=perf.values.max(), min_=perf.values.min(), range_color=Faker.visual_color), toolbox_opts=opts.ToolboxOpts(is_show=True), )) series = perf.index.get_level_values(0).unique() if isinstance( perf.index, pd.MultiIndex) else [k] for i, _s in enumerate(series): _data = perf.loc[_s] if isinstance(perf.index, pd.MultiIndex) else perf X, Y = np.meshgrid(_data.index, _data.columns) d = list( zip(X.flatten().astype(str), Y.flatten().astype(str), _data.values.T.flatten().astype(np.float))) c = c.add( series_name=str(_s), shading="color", data=d, xaxis3d_opts=opts.Axis3DOpts(type_="category"), yaxis3d_opts=opts.Axis3DOpts(type_="category"), grid3d_opts=opts.Grid3DOpts(width=100, height=50, depth=100), ) results[k] = c tab = Tab() for k, v in results.items(): tab.add(v, k) tab.render("%s.html" % p) elif plot_tymod == "dyn-hm": tab = Tab() for k, v in dict_results.items(): v = v.unstack() _tl = _timeline(v, name=k) tab.add(_tl, k) tab.render("%s.html" % p)
return data_pair # 用于添加所有绘制出来的漏斗图 tab = Tab() for monthSheetName in salesBook.sheetnames: # 获取该表下用于绘图的数据对 data_pair = read_data_pair(salesBook[monthSheetName]) # 绘制漏斗图,要求: # 1、隐藏图例; # 2、每张图标题设置为:f"{月份}销售" # 3、图中每个漏斗项中间的距离为10 # 4、多漏斗图用看板展示; # 5、保存 funnel = (Funnel().set_global_opts( title_opts=opts.TitleOpts(title=f"{monthSheetName}销售"), legend_opts=opts.LegendOpts(is_show=False)).add(series_name="", data_pair=data_pair, gap=10)) tab.add(chart=funnel, tab_name=f"{monthSheetName}") # 保存看板图 resultPath = "./result" if not os.path.exists(resultPath): os.mkdir(path=resultPath) resultFileName = "year_funnel_tab.html" tab.render(path=os.path.join(resultPath, resultFileName))
def all(): tab = Tab(page_title='2019年安全公众号统计分析') tab.add(article_day_3d(), "公众号文章发布统计") tab.add(account_article_num(), "公众号收录文章数") tab.add(article_day_num(), "每天收录文章统计") tab.add(article_hour_num(), "文章发布时间段") tab.add(article_source_url(), "公众号文章来源") tab.add(zhaopin(), "公众号文章主题统计") tab.add(article_author(), "勤奋作者") tab.render(path='./static/year/2019.html') print('生成完毕')
def anylize_to_html_02(data={}, fl_style='para1', info='', add_info=''): # 根据生成的原始数据 from pyecharts import options as opts from pyecharts.commons.utils import JsCode from pyecharts.charts import Scatter, Bar, Timeline, Line, Page, Tab from pyecharts.components import Table tab0 = Tab() data.loc[(data['max_back_1'] != 0), '赢撤比'] = -1 * data['end_1'] / data['max_back_1'] data.loc[(data['max_back_1'] == 0), '赢撤比'] = 0 data = data[data['end_1'] != 0] clm = list(set(data['celue_name'].tolist())) print(clm) title = f'所有参数的,每个指标的统计状态:' tjdf = pd.DataFrame() tj_dict = {} # 生成分类数据tjdf i = 0 tj_index = { 'end_1': '最终收益', 'sharp_rate_1': '夏普率', 'max_back_1': '最大回撤', 'win_rate_2': '胜率', 'trade_nums_1': '交易次数', 'profit_days_1': '盈利天数', '赢撤比': '赢撤比' } for clm0 in clm: print(clm0) df = data[data['celue_name'] == clm0].copy() for k, v in df.groupby(fl_style): print(k) index_0 = i + 1 i = i + 1 tjdf.loc[index_0, fl_style] = k tjdf.loc[index_0, 'clm'] = clm0 for tj_ix in tj_index.keys(): tjdf.loc[index_0, tj_index[tj_ix]] = v[tj_ix].mean() tjdf.loc[index_0, '赢撤比2'] = -1 * v['end_1'].mean( ) / v['max_back_1'].mean() if v['max_back_1'].mean() != 0 else 0 print(tjdf) print(tjdf.keys()) # exit() filter_col = '夏普率' df0_dict = {} #策略名+参数的字典。 tjdf2 = pd.DataFrame() for x, clm0 in enumerate(clm): # 每个策略类,按照filter_col排序,根据每个策略回测数量,选取比较高的排名的策略 df0 = tjdf[tjdf['clm'] == clm0].copy() df0.sort_values(filter_col, ascending=True, inplace=True) df0 = df0.iloc[-1 * int(df0.shape[0] * 0.35):] df0_dict[str(df0.iloc[-1]['clm'])] = list( sorted(set(df0[fl_style].tolist()))) tjdf2 = tjdf2.append(df0, ignore_index=True) tjdf2.sort_values('最终收益', ascending=True, inplace=True) tjdf2 = tjdf2.iloc[int(tjdf2.shape[0] * 0.1):] print(tjdf2) tj_index2 = list(tjdf2.keys()) tj_index2.remove(fl_style) tj_index2.remove('clm') clm2 = tj_index2 for x, clm0 in enumerate(clm2): tl = Timeline() tjdf0 = tjdf2[tjdf2['最终收益'] != 0].copy() tjdf0.sort_values(clm0, ascending=True, inplace=True) # df0 = tjdf0.iloc[-1*int(tjdf0.shape[0]*0.12):].copy() df0 = tjdf0 index_list = list(df0.keys()) index_list.remove('clm') df0 = df0[index_list] for k, i in enumerate(index_list): xdata, ydata1 = df0[fl_style], df0[[i, fl_style]] print(add_info) # print( ydata1) sca0 = (Scatter().add_js_funcs( f"document.write('%s')" % add_info ).add_xaxis(xdata.tolist()).add_yaxis( '分布值', ydata1.values.tolist(), label_opts=opts.LabelOpts(is_show=False, ), ).set_global_opts( xaxis_opts=opts.AxisOpts( offset=0, name='参数名:', type_="value", is_show=True, axistick_opts=opts.AxisTickOpts(is_show=True)), yaxis_opts=opts.AxisOpts( offset=0, name='分布值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), title_opts=opts.TitleOpts(title=f"{title}==:{i}"), legend_opts=opts.LegendOpts(pos_right=True), tooltip_opts=opts.TooltipOpts(formatter=JsCode( "function (params) { return '==canshu:'+params.value[0] +' <br/>== 指标:'+ params.value[1]}" ), ), )) tl.add(sca0, f"{i}") tab0.add(tl, clm0) tl.render(f"{info}.html") print(f"{info}.html") return df0_dict
def Create_Combine_Compare(exam_name): tab = Tab() for i in range(len(exam_name)): tab.add(ALL_Exam_Tab[i], exam_name[i]) tab.render("成绩对比结果.html")
def index(): tab = Tab() tab.add(grid_mutil_yaxis(), "美元指数及GDP增长率") tab.add(line_areastyle_boundary_gap(), "1971-1990GDP增长率") tab.add(bar_stack1(), "1986-2005外资净投入") tab.add(effectscatter_splitline(), "1987-2001泰国汇率变化") tab.add(bar_base(), "中美外资净投入对比") tab.add(pie_rosetype(), "2018石油产量") tab.add(line_base(), "21世纪历年国际油价/美元") tab.add(line_base2(), "近年委内瑞拉通货膨胀率") tab.add(Pie_base(), "2018中国产业加值占GDP比重%") tab.add(Pie_base1(), "2018美国产业加值占GDP比重%") tab.add(bar_datazoom_slider(), "中国贸易总额") tab.add(line_markpoint(), "中国贸易总额增长率") tab.add(pie_base(), "主要国家贸易占比") tab.add(table_base(), "历年中国贸易总额") tab.add(timeline_map(data), "2012-2018GDP增长率") return Markup(tab.render_embed())
title='图1-6', subtitle="四川特殊教育基本情况", # 设置标题与副标题样式,进行图例说明 subtitle_textstyle_opts=opts.TextStyleOpts(color="black", font_size=15)), xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts( is_show=True)), yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts( is_show=True)), )) return c #返回数据 effectscatter_symbol().render_notebook() tab = Tab() #添加tab tab.add(teachers_map(), "特殊教育专任教师数") tab.add(schools_map(), "各省特殊教育学校数") tab.add(recruit_students_map(), "各省特殊教育招生数") tab.add(all(), "教育支出与特殊教育在校学生详情") tab.add(finacial_education_map(), "地方财政教育支出") tab.add(four_compare(), "四个不同省份对比") tab.add(effectscatter_symbol(), "四川特殊教育基本情况") tab.render_notebook() @app.route('/', endpoint='r1', redirect_to='/index') def root(): return render_template('index.html') @app.route('/index')
def get_line_charts(): hb_confirmed = [int(x) for x in np.array(get_hubei_data())[:, 0]] cq_confirmed = [int(x) for x in np.array(get_chongqin_data())[:, 0]] tot_confirmed = [int(x) for x in np.array(get_total_data())[:, 0]] hb_cured = [int(x) for x in np.array(get_hubei_data())[:, 1]] cq_cured = [int(x) for x in np.array(get_chongqin_data())[:, 1]] tot_cured = [int(x) for x in np.array(get_total_data())[:, 1]] hb_dead = [int(x) for x in np.array(get_hubei_data())[:, 2]] cq_dead = [int(x) for x in np.array(get_chongqin_data())[:, 2]] tot_dead = [int(x) for x in np.array(get_total_data())[:, 2]] line_chart_1 = ( Line(init_opts=opts.InitOpts()) .add_xaxis(time_list) .add_yaxis('湖北',hb_confirmed, color='#ff6361') .add_yaxis('重庆', cq_confirmed, color='#ffa600') .add_yaxis('全国', tot_confirmed, color='#bc5090') .set_global_opts( title_opts=opts.TitleOpts(title='2-8至2-22之间累计确诊病例变化趋势', pos_left='20%', pos_top='5%'), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type='shadow'), legend_opts=opts.LegendOpts(orient='horizontal', pos_left='60%', pos_top='5%'), yaxis_opts=opts.AxisOpts( name='人数', type_='value', axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), ) ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=True)) ) line_chart_2 = ( Line() .add_xaxis(time_list) .add_yaxis('湖北', hb_cured, color='#ff6361') .add_yaxis('重庆', cq_cured, color='#ffa600') .add_yaxis('全国', tot_cured, color='#bc5090') .set_global_opts( title_opts=opts.TitleOpts(title='2-8至2-22之间累计治愈病例变化趋势', pos_left='20%', pos_top='5%'), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type='shadow'), legend_opts=opts.LegendOpts(orient='horizontal', pos_left='60%', pos_top='5%'), yaxis_opts=opts.AxisOpts( name='人数', type_='value', axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), ) ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=True)) ) line_chart_3 = ( Line() .add_xaxis(time_list) .add_yaxis('湖北', hb_dead, color='#ff6361') .add_yaxis('重庆', cq_dead, color='#ffa600') .add_yaxis('全国', tot_dead, color='#bc5090') .set_global_opts( title_opts=opts.TitleOpts(title='2-8至2-22之间累计死亡病例变化趋势', pos_left='20%', pos_top='5%'), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type='shadow'), legend_opts=opts.LegendOpts(orient='horizontal', pos_left='60%', pos_top='5%'), yaxis_opts=opts.AxisOpts( name='人数', type_='value', axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), ) ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=True)) ) tab = Tab(page_title='湖北、重庆、全国病例变化趋势') tab.add(line_chart_1, '累计确诊人数') tab.add(line_chart_2, '累计治愈人数') tab.add(line_chart_3, '累计死亡人数') return tab
temp_list.append(line[10]) # print(temp_list) res_list.append(temp_list) temp_list = [] res_name_list.append(line[1]) table.add(heardes, res_list).set_global_opts( title_opts=opts.ComponentTitleOpts(title="院软课题知识数据表(2010-2019)")) return table if __name__ == "__main__": time_start = time.time() # 记录启动时间 # generate_json() # year_str = "2014" # opts_title = year_str + "年院软课题知识网络拓扑图绘制" # graph_rs(year_str, opts_title).render("..\\000LocalData\\caict_k\\Graph_rs_render.html") # 开始尝试tab选项卡多图的展示 tab = Tab(page_title="院软课题知识网络拓扑图绘制(2010-2019)") for year_item in range(2019, 2009, -1): opts_title = str(year_item) + "年院软课题知识网络拓扑图绘制" tab.add(graph_rs(str(year_item), opts_title), str(year_item) + "年") tab.add(table_base(), "数据查询表") tab.render("..\\000LocalData\\caict_k\\CAICT_rs_graph_force.html") time_end = time.time() # 记录程序结束时间 print("=>Scripts Finish, Time Consuming:", (time_end - time_start), "S") """" cnzz <script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_4586080'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s11.cnzz.com/stat.php%3Fid%3D4586080%26show%3Dpic2' type='text/javascript'%3E%3C/script%3E"));</script> """
def tab_product_base(): """ It is used to respond to requests for chart parameters. Returns ------- tab : TYPE-echarts parameters return echarts parameters. """ tab = Tab() tab.add(hist_product_feature_base(), "Product Module") tab.add(hist_product_edc_feature_base(), "EDC Feature") tab.add(hist_product_deployment_base(), "Product Deployment") tab.add(hist_product_support_base(),"Product Support") tab.add(hist_product_train_base(), "Product Train") tab.add(radar_product_rating_base(),"Product Rating") return tab
def draw_charts(kline_data ,canshu ={} ,canshu2={},vol_bar=False,markline_show1 =False ,markline_show2 =False, path = '0501'): ''' df['candle_begin_time','open','high','low','close','volume'] [['candle_begin_time','open','high','low','close','volume']] kdata = df[['open', 'high', 'low', 'close']].values.tolist() df['candle_begin_time'].values.tolist() :return: ''' df = kline_data.copy() df['candle_begin_time'] = pd.to_datetime(df['candle_begin_time']) time_list = df['candle_begin_time'].apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S')).values.tolist() vol = df['volume'].values.tolist() kline = Kline() kline.add_xaxis(xaxis_data=time_list) signal_pos_list = [] if 'signal' in df.columns: print('signal,存在!') df['pos'] = df['signal'].shift(1) for i in df[df['pos'] > 0].index: bar0 = df.iloc[i] sig_pos0 = opts.MarkPointItem(name="做多", coord=[bar0['candle_begin_time'].strftime('%Y-%m-%d %H:%M:%S'),bar0.low -2], value='买', symbol ='circle', symbol_size =[20,40], itemstyle_opts = {'color': 'red'}) signal_pos_list.append(sig_pos0) for i in df[df['pos'] < 0].index: bar0 = df.iloc[i] sig_pos0 = opts.MarkPointItem(name="做空", coord=[bar0['candle_begin_time'].strftime('%Y-%m-%d %H:%M:%S'),bar0.high +3], value='卖', symbol='circle', symbol_size=[20, 40], itemstyle_opts={'color': 'blue'}) signal_pos_list.append(sig_pos0) for i in df[df['pos'] == 0].index: bar0 = df.iloc[i] sig_pos0 = opts.MarkPointItem(name="平仓", coord=[bar0['candle_begin_time'].strftime('%Y-%m-%d %H:%M:%S'),bar0.low - 2], value='平', symbol ='triangle', symbol_size =[20,40], itemstyle_opts = {'color': 'green'}) signal_pos_list.append(sig_pos0) else : df['pos'] =None markline =[] if markline_show1 and ('signal' in df.columns) : area_index_list =[i for i in df[(df['pos'] ==0)|(df['pos'] >0)|(df['pos'] <0)].index] for ix,i in enumerate(area_index_list): if ix+1 > len(area_index_list)-1: break i_now = df.iloc[area_index_list[ix]] i_next = df.iloc[area_index_list[ix+1]] if (i_now['pos'] >0) or (i_now['pos'] <0) : log_info = f"价差:={i_next['open']-i_now['open']}--({i_next['open']}-{i_now['open']})" else : log_info =f"平仓:{i_next['open']}---开仓:{i_now['open']}" sig_area = [{"xAxis": i_now['candle_begin_time'].strftime('%Y-%m-%d %H:%M:%S'), "yAxis": i_now['open'] , "value": None}, {"xAxis": i_next['candle_begin_time'].strftime('%Y-%m-%d %H:%M:%S'), "yAxis": i_now['open'], "value":log_info}] sig_area_v = [{"xAxis": i_next['candle_begin_time'].strftime('%Y-%m-%d %H:%M:%S'), "yAxis": i_now['open'] , "value": None}, {"xAxis": i_next['candle_begin_time'].strftime('%Y-%m-%d %H:%M:%S'), "yAxis": i_next['open'], "value":None}] markline.append(sig_area) markline.append(sig_area_v) elif markline_show2 and ('signal' in df.columns): area_index_list =[i for i in df[(df['pos'] ==0)|(df['pos'] >0)|(df['pos'] <0)].index] for ix,i in enumerate(area_index_list): i_now = df.iloc[area_index_list[ix]] i_1_now = df.iloc[area_index_list[ix-1]] if ix != 0 else 0 if i_now['pos'] == 0: log_info = f"交易价: {round(i_now['open'], 1)} +- 2__盈亏:{round(i_now['open'], 1) - round(i_1_now['open'], 1)}" else: log_info = f"交易价: {round(i_now['open'],1)} +- 2" sig_area = [{"xAxis": i_now['candle_begin_time'].strftime('%Y-%m-%d %H:%M:%S'), "yAxis": i_now['open'] , "value": None}, {"xAxis": (i_now['candle_begin_time']+timedelta(minutes=15)).strftime('%Y-%m-%d %H:%M:%S'), "yAxis": i_now['open'], "value":log_info}] markline.append(sig_area) colors = {'red': 'rgb((220,20,60)','red2': 'rgb((250,20,40)', 'yangzi': 'rgb(255,0,255)', 'zi': 'rgb(128,0,128)', 'sehnzi': 'rgb(148,0,211)', 'blue': 'rgb(0,0,255)', 'qing': 'rgb(0,255,255)', 'black': 'rgb(0,0,0)', 'shengreen': 'rgb(157,255,212)', 'green': 'rgb(0,255,0)', 'yellow': 'rgb(255,255,0)', 'glod': 'rgb(218,165,32)', 'orange': 'rgb(255,165,0)', 'brown': 'rgb(165,42,42)'} kline.add_xaxis(xaxis_data=time_list) kline.add_yaxis(series_name="oclh", xaxis_index=1, yaxis_index=1, y_axis =df.loc[:, ['open', 'close', 'low', 'high']].values.tolist(), markline_opts=opts.MarkLineOpts(data=markline, linestyle_opts=opts.LineStyleOpts(type_='dotted',width=3,color='red',opacity=0.5), label_opts=opts.LabelOpts(position="right", color="blue", font_size=13),), #官网给出的样本 markpoint_opts=opts.MarkPointOpts(data=signal_pos_list), itemstyle_opts=opts.ItemStyleOpts(color="#ec0090", color0="#00aa3c"), ) kline.set_global_opts( legend_opts=opts.LegendOpts(is_show=True,pos_top=30, pos_left="left",orient='vertical'), datazoom_opts=[ opts.DataZoomOpts( is_show=False, type_="inside", xaxis_index=[0, 1], range_start=90, range_end=100, orient='vertical'), opts.DataZoomOpts( is_show=True, xaxis_index=[0, 1], type_="slider", pos_top="20%", range_start=90, range_end=100,orient='vertical'),], yaxis_opts =opts.AxisOpts( is_scale=True, splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),), title_opts=opts.TitleOpts( title = 'K_line', pos_top='middle', title_textstyle_opts=opts.TextStyleOpts( color='black',font_weight='bold' ,font_size=20)), tooltip_opts=opts.TooltipOpts( trigger="axis", trigger_on='"mousemove"',#click|mousemove axis_pointer_type="cross", is_show_content=True, is_always_show_content=True, background_color="rgba(20, 105, 245, 0.1)", border_width=1, border_color= "#ccc", position = ['70%','30%'], textstyle_opts=opts.TextStyleOpts(font_size=10,color="#000"),), visualmap_opts=opts.VisualMapOpts( is_show=True, dimension=2, series_index=5, is_piecewise=True, pieces=[{"value": 1, "color": "#00da3c"},{"value": -1, "color": "#ec0000"},],), axispointer_opts=opts.AxisPointerOpts( is_show=True, link=[{"xAxisIndex": "all"}], label=opts.LabelOpts(background_color="#777"),), brush_opts=opts.BrushOpts( x_axis_index="all", brush_link="all", out_of_brush={"colorAlpha": 0.1}, brush_type="lineX",), ) if len(canshu.keys())>0: cos = list(colors.values()) line = Line() for k,v in canshu.items(): line.add_xaxis(xaxis_data=time_list) line.set_global_opts(xaxis_opts=opts.AxisOpts(type_="category")) co = cos.pop() line.add_yaxis( series_name=k, y_axis = [y for y in v.values.tolist() if y != np.nan], xaxis_index=1, yaxis_index=1, is_smooth=False, is_connect_nones=False,# 是否连接空数据 is_symbol_show=False,#是否显示值的位置,默认显示。 color = co, is_hover_animation = False, # 是否开启 hover 在拐点标志上的提示动画效果。 linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.9,color=co), label_opts=opts.LabelOpts(is_show =True,position='middle',distance=2,rotate=5,color = 'rgb(165,42,42)'), itemstyle_opts=opts.ItemStyleOpts(color=co),) kline = kline.overlap(line) grid_chart = Grid(init_opts=opts.InitOpts(width = "1500px",height= "700px",theme=ThemeType.DARK)) grid_chart.add(kline,grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%",pos_top='4%' ,height="70%")) if( vol_bar == True) or (len(canshu2.keys())==0): bar = Bar() bar.add_xaxis(xaxis_data=time_list) bar.add_yaxis( series_name="volume", y_axis=vol, xaxis_index=1, yaxis_index=2, label_opts=opts.LabelOpts(is_show=False), ) bar.set_global_opts(xaxis_opts=opts.AxisOpts( type_="category", is_scale=True, grid_index=1, boundary_gap=False, axisline_opts=opts.AxisLineOpts(is_on_zero=False), axistick_opts=opts.AxisTickOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=False), axislabel_opts=opts.LabelOpts(is_show=False), split_number=20, min_="dataMin", max_="dataMax", ), yaxis_opts=opts.AxisOpts( grid_index=1, is_scale=True, split_number=2, axislabel_opts=opts.LabelOpts(is_show=False), axisline_opts=opts.AxisLineOpts(is_show=False), axistick_opts=opts.AxisTickOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=False), ), legend_opts=opts.LegendOpts(is_show=True), ) grid_chart.add(bar,grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", pos_top="80%", height="15%"),) if len(canshu2.keys())>0 : line2 = Line() line2.add_xaxis(xaxis_data=time_list) for i, k in enumerate(canshu2.keys()): co = random.choice(list(colors.values())) line2.add_yaxis( series_name=k, y_axis=[y for y in canshu2[k].values.tolist()], xaxis_index=1, yaxis_index=i + 1, is_smooth=True, is_symbol_show=False, is_hover_animation=True, color=co, z_level=0, linestyle_opts=opts.LineStyleOpts(width=2, opacity=0.5, color=co), label_opts=opts.LabelOpts(is_show=False), ) if k == list(canshu2.keys())[-1]: continue line2.extend_axis(yaxis=opts.AxisOpts(name=k, type_="value", position="right", min_=None, max_=None, axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color=co)), axislabel_opts=opts.LabelOpts(formatter="{value}"), )) line2.set_global_opts(xaxis_opts=opts.AxisOpts( type_="category", is_scale=True, grid_index=1, split_number=20, min_="dataMin", max_="dataMax", axisline_opts=opts.AxisLineOpts(is_on_zero=False), axistick_opts=opts.AxisTickOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=False), axislabel_opts=opts.LabelOpts(is_show=False), ), yaxis_opts=opts.AxisOpts(name=k, grid_index=i + 1, position='right', splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)), min_=None, max_=None, is_scale=True, offset=50, ), ) grid_chart.add(line2,grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", pos_top="75%", height="23%"),is_control_axis_index=True) tab = Tab() zijin_data = (kline_data['per_lr'].cumsum()) zijin_data.fillna(method='ffill', inplace=True) zijin_line = Line(init_opts=opts.InitOpts(width = "1500px",height= "700px",theme=ThemeType.DARK)).add_xaxis(time_list) zijin_line.add_yaxis(series_name="zijin_line:", y_axis=zijin_data.values, color="#FF0000") zijin_line.set_global_opts( datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")], title_opts=opts.TitleOpts(title="资金曲线变化"), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), yaxis_opts = opts.AxisOpts( is_scale=True, axislabel_opts=opts.LabelOpts(is_show=False), axisline_opts=opts.AxisLineOpts(is_show=False), axistick_opts=opts.AxisTickOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=False), ), legend_opts = opts.LegendOpts(is_show=True) ) tab.add(grid_chart,'kline' ) tab.add(zijin_line,'资金曲线变化' ) tab.render(f"{path}.html") html0 = tab.render(f"{path}.html") if os.path.exists(html0): print("ok!保存在:") print(html0) else: print('保存失败!')
line = Line(init_opts=opts.InitOpts(width="1200px", height="600px")) line.add_xaxis(dates) line.add_yaxis("确诊", cc_data[0], is_symbol_show=False) line.add_yaxis("死亡", cc_data[1], is_symbol_show=False) line.set_global_opts( title_opts=opts.TitleOpts(title="疫情状况", pos_top="top", pos_left="center"), legend_opts=opts.LegendOpts(pos_top="5%", pos_left="center"), ) tab = Tab() tab.add_js_funcs( "var div = document.createElement('div'); var divs = document.createAttribute('style'); divs.value = 'text-align:center'; div.setAttributeNode(divs); var divc = document.createAttribute('class'); divc.value = 'button_group'; div.setAttributeNode(divc); var but = document.createElement('button'); but.innerHTML='" + topics[0] + "'; but.onclick = function() { window.location.href='index0.html' }; div.appendChild(but); var but = document.createElement('button'); but.innerHTML='" + topics[1] + "'; but.onclick = function() { window.location.href='index1.html' }; div.appendChild(but); var but = document.createElement('button'); but.innerHTML='" + topics[2] + "'; but.onclick = function() { window.location.href='index2.html' }; div.appendChild(but); var but = document.createElement('button'); but.innerHTML='" + topics[3] + "'; but.onclick = function() { window.location.href='index3.html' }; div.appendChild(but); var but = document.createElement('button'); but.innerHTML='" + topics[4] + "'; but.onclick = function() { window.location.href='index4.html' }; div.appendChild(but); document.body.appendChild(div);" ) tab.add(chart=theme_river, tab_name="议题变化") tab.add(chart=bar, tab_name="情绪变化") tab.add(chart=line, tab_name="疫情状况") tab.add(chart=wc_tl, tab_name="词频统计") tab.render("index" + str(topic) + ".html")
# 计算未提交人数 df['已提交'] = df.apply(lambda x: x.value_counts().get(0, 0), axis=1) print(df) df['提交率'] = 1 - df.已提交 / (df.columns.size - 1) df['提交率'] = df['提交率'].apply(lambda x: format(x, '.2')) print(df.提交率) xaxis = [ '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1' ] for i in range(16): xaxis[i] = '第' + str(i + 1) + '次' print(xaxis) def line_xaxis_type() -> Line: c = (Line().add_xaxis(xaxis).add_yaxis( '1班_赵丽华', submission_rate(dfz)).add_yaxis( "4班_李烨", submission_rate(dfz)).set_global_opts( title_opts=opts.TitleOpts(title="正确率"), )) return c tab = Tab() tab.add(timeline_bar(), "作业平均分对比") tab.add(line_xaxis_type(), '作业提交率') tab.render()
import data_spider import data_analyze import china_dailyData_line import china_map import overseas_map import overseas_bar import china_pie import overseas_worldCloud from pyecharts.charts import Bar, Grid, Line, Pie, Tab #数据爬取及分析 data_spider.run() data_analyze.run() #数据可视化呈现 tab = Tab() tab.add(china_map.plot_china_provinces(), "中国疫情数据地图") tab.add(china_dailyData_line.plot_chinaDayData(),"中国每日疫情数据折线图") tab.add(china_pie.plot_chinaPie(),"国内省份死亡/治愈人数饼图") tab.add(overseas_bar.plot_overseasBar(), "海外疫情数据条形图") tab.add(overseas_map.plot_overseasMap(),"海外疫情数据地图") tab.add(overseas_worldCloud.plot_countryWordCloud(),"海外疫情国家词云图") #tab.add(china_ratePie.plot_healDeadPie(), "pie-example") tab.render("show_view.html")
position="right", offset=80, axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts( color="#5793f3")), axislabel_opts=opts.LabelOpts(formatter="{value} ml"), ), title_opts=opts.TitleOpts(title="Grid-多 Y 轴示例"), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), )) line = (Line().add_xaxis(x_data).add_yaxis( "平均温度", [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2], yaxis_index=2, color="#675bba", label_opts=opts.LabelOpts(is_show=False), )) bar.overlap(line) return Grid().add(bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True) tab = Tab() tab.add(bar_datazoom_slider(), "bar-example") tab.add(line_markpoint(), "line-example") tab.add(pie_rosetype(), "pie-example") tab.add(grid_mutil_yaxis(), "grid-example") tab.render("Tab_base.html")
radius=["30%", "75%"], center=["75%", "50%"], rosetype="area", ).set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例"))) return c def table_base() -> Table: table = Table() headers = ["City name", "Area", "Population", "Annual Rainfall"] rows = [ ["Brisbane", 5905, 1857594, 1146.4], ["Adelaide", 1295, 1158259, 600.5], ["Darwin", 112, 120900, 1714.7], ["Hobart", 1357, 205556, 619.5], ["Sydney", 2058, 4336374, 1214.8], ["Melbourne", 1566, 3806092, 646.9], ["Perth", 5386, 1554769, 869.4], ] table.add(headers, rows).set_global_opts( title_opts=opts.ComponentTitleOpts(title="Table")) return table tab = Tab() tab.add(bar_datazoom_slider(), "bar-example") tab.add(line_markpoint(), "line-example") tab.add(pie_rosetype(), "pie-example") tab.add(table_base(), "table-example") tab.render("tab_render.html")