def setrose(): x1 = ['2016年', '2017年', '2018年', '2019年', '2020年'] y1 = ['文学', 350.0, 345.0, 345.0, 355.0, 355.0] y2 = ['理学', 285.0, 290.0, 280.0, 290.0, 288.0] c = (Line(init_opts=opts.InitOpts( width="1600px", height="800px")).add_xaxis(xaxis_data=x1).add_yaxis( series_name="文学", y_axis=y1, markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ]), markline_opts=opts.MarkLineOpts( data=[opts.MarkLineItem(type_="average", name="平均值")]), ).add_yaxis( series_name="理学", y_axis=y2, markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ]), markline_opts=opts.MarkLineOpts(data=[ opts.MarkLineItem(type_="average", name="平均值"), opts.MarkLineItem(symbol="none", x="90%", y="max"), opts.MarkLineItem(symbol="circle", type_="max", name="最高点"), ]), ).set_global_opts( title_opts=opts.TitleOpts(title="近5年理学/文学国家线趋势"), tooltip_opts=opts.TooltipOpts(trigger="axis"), toolbox_opts=opts.ToolboxOpts(is_show=True), xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), )) return c
def enroll(): global wid, hei data = analysis_data.enroll_rate() data['true_rate'] = data['true_rate'].apply(lambda x: float(x) * 10) print(data['year'].values) c = (Line(init_opts=opts.InitOpts(width=wid, height=hei)).add_xaxis( [x for x in data['year'].values]).add_yaxis( '报名人数', data['num_people'].values, is_smooth=True, markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")])).add_yaxis( "实际录取人数", data['true_num'].values, is_smooth=True, markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")]), ).add_yaxis( "实际录取率", [round(x, 2) for x in data['true_rate'].values], is_smooth=True, markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")]), ).set_global_opts(title_opts=opts.TitleOpts(title="全国高考走势图"))) return c
def three_lines_base(): c = ( Line().add_xaxis(genre).add_yaxis( 'viewing', view, #设置标签指出最高值 markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")]), ).add_yaxis( 'coins', coin, # 设置标签指出最高值 markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")]), ).add_yaxis( 'favorite', favorite, # 设置标签指出最高值 markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")]), ).set_global_opts( title_opts=opts.TitleOpts( title='viewing amount grouped by categories'), #将分区名旋转45度来保证所有分区都能显示 xaxis_opts=opts.AxisOpts( axislabel_opts={'rotate': 45})).dump_options_with_quotes()) return c
def line_base(l1, l2) -> Line: lh_list = [y["total_box"] for y in l2] lh_list.extend([0 for _ in range(3)]) # 前面三天为0 c = (Line( init_opts=opts.InitOpts(bg_color="", page_title="总票房")).add_xaxis( [y["date"] for y in reversed(l1)]).add_yaxis( "哪吒之魔童降世", [y["total_box"] for y in reversed(l1)], is_smooth=True, markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")])).add_yaxis( "烈火英雄", reversed(lh_list), is_smooth=True, markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem( type_="max")])).set_global_opts( title_opts=opts.TitleOpts( title="总票房", subtitle_textstyle_opts={ "color": "red" }, subtitle="单位: 万元"), toolbox_opts=opts.ToolboxOpts())) return c.render("line.html")
def line_markpoint(): obj_l = Line() obj_l.add_xaxis(Faker.choose()) obj_l.add_yaxis("商家A", Faker.values(), markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="min"),opts.MarkPointItem(type_="max")], ) ) obj_l.add_yaxis("商家B", Faker.values(), markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="min"),opts.MarkPointItem(type_="max")] ) ) obj_l.set_series_opts( # 该参数设置在这里对商家A,商家B都起作用 # 设置该参数,则x对应的y值会显示出来,该参数默认为True label_opts=opts.LabelOpts(is_show=False) ) obj_l.set_global_opts( title_opts=opts.TitleOpts(title="Line-MarkPoint(最大最小值)", subtitle="最大最小值标注"), xaxis_opts=opts.AxisOpts( name="x轴", # 坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样,可设置x轴刻度顶格 boundary_gap=True, # 类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。 axistick_opts=opts.AxisTickOpts(is_align_with_label=True) ), ) return obj_l
def line_markpoint(data) -> Line: level = data[2] city = data[0] # s=data[1] # print(s) title = "北成上广深折线图-个数" c = (Line().add_xaxis(level).add_yaxis( city[0], data[1][0], markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")])).add_yaxis( city[1], data[1][1], markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")])).add_yaxis( city[2], data[1][2], markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="min")])).add_yaxis( city[3], data[1][3], markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")])). add_yaxis( city[4], data[1][4], markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")])).set_global_opts( title_opts=opts.TitleOpts(title="北成上广深-折线图"))) return c
def sentiment_analysis(self): with open(r'./用户影评相关数据/' + self.filmname + '用户影评相关信息.json', 'r', encoding='UTF-8') as f: t1 = json.load(f, strict=False) self.textBrowser.append("开始生成" + self.filmname + "的情感分析图......") QApplication.processEvents() # 取出里面的数据 comment_list = [] for each in t1: comment_list.append(each['用户评论']) # 存储情感数据 sentimentslist = [] for i in comment_list: s = round(SnowNLP(i).sentiments, 2) sentimentslist.append(s) # 对数据进行处理,计算出各个得分的个数 result = {} for i in set(sentimentslist): result[i] = sentimentslist.count(i) info = sorted(result.items(), key=lambda x: x[0], reverse=False) # dict的排序方法 attr, val = [], [] for each in info[:-1]: attr.append(str(each[0])) val.append(each[1]) e = (Line(init_opts=opts.InitOpts( width="665px", height="500px")).add_xaxis(attr).add_yaxis( "评论情感分析折线图", val, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem()]), is_smooth=True, ).set_global_opts( tooltip_opts=opts.TooltipOpts(is_show=True), toolbox_opts=opts.ToolboxOpts( is_show=True, pos_right="30%", ), title_opts=opts.TitleOpts(title="评论情感分析折线图")).render( "./爬虫数据关联可视化/" + self.filmname + "影评可视化数据/line_markpoint_custom.html")) QApplication.processEvents() self.emotion_pic = (Line(init_opts=opts.InitOpts( width="665px", height="500px")).add_xaxis(attr).add_yaxis( "评论情感分析折线图", val, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem()]), is_smooth=True, ).set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True), toolbox_opts=opts.ToolboxOpts( is_show=True, pos_right="30%", ), title_opts=opts.TitleOpts(title="评论情感分析折线图"))) self.saveflag = '3' self.textBrowser.append(self.filmname + "的情感分析图生成完毕!") QApplication.processEvents() self.show_sentiment_analysis() QApplication.processEvents()
def render_lines(country_name): #------------------------------------------------------------------------------------- # 第一步:读取数据 #------------------------------------------------------------------------------------- n = "dataSets\\countrydata.csv" data = pd.read_csv(n) data = data[data['countryName'] == country_name] date_list = list(data['dateId']) date_list = list(map(lambda x:str(x),date_list)) confirm_list = list(data['confirmedCount']) current_list = list(data['currentConfirmedCount']) dead_list = list(data['deadCount']) heal_list = list(data['curedCount']) print(len(date_list)) #print(date_list) # 日期 #print(confirm_list) # 确诊数据 #print(current_list) # 疑似数据 #print(dead_list) # 死亡数据 #print(heal_list) # 治愈数据 #------------------------------------------------------------------------------------- # 第二步:绘制折线面积图 #------------------------------------------------------------------------------------- line = ( Line() .add_xaxis(date_list) # 平均线 最大值 最小值 .add_yaxis('确诊数据', confirm_list, is_smooth=True, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min")])) .add_yaxis('现存确诊数据', current_list, is_smooth=True, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min")])) .add_yaxis('死亡数据', dead_list, is_smooth=True, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min")])) .add_yaxis('治愈数据', heal_list, is_smooth=True, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min")])) # 隐藏数字 设置面积 .set_series_opts( areastyle_opts=opts.AreaStyleOpts(opacity=0.5), label_opts=opts.LabelOpts(is_show=False)) # 设置x轴标签旋转角度 .set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-30)), yaxis_opts=opts.AxisOpts(name='人数', min_=3), title_opts=opts.TitleOpts(title='2019-nCoV'+country_name+'疫情数据曲线图')) ) return line
def line_markpoint() -> Line: c = (Line().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values(), markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="min")]), ).add_yaxis( "商家B", Faker.values(), markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_="max")]), ).set_global_opts(title_opts=opts.TitleOpts(title="Line-MarkPoint"))) return c
def line_three_html(self, title, key, val_min, val_max, val_avg): line = Line(init_opts=opts.InitOpts(width="100%", height="300px")) line.set_global_opts( title_opts=opts.TitleOpts( title=title, title_textstyle_opts=opts.TextStyleOpts(color="black", font_size=14), pos_left="left", ), # 增添x,y轴以及内部的缩放 datazoom_opts=[opts.DataZoomOpts(range_start=0, range_end=100)], yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)) ) line.add_xaxis(key) line.add_yaxis( "最小值", val_min, is_smooth=True, markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="min", name="最小值"), opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="average", name="平均值"), ] ), ) line.add_yaxis( "最大值", val_max, is_smooth=True, markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="min", name="最小值"), opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="average", name="平均值"), ] ), ) line.add_yaxis( "平均值", val_avg, is_smooth=True, markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="min", name="最小值"), opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="average", name="平均值"), ] ), ) return line.render_embed()
def bar_border_radius(): c = ( Bar(init_opts=opts.InitOpts( animation_opts=opts.AnimationOpts( # 柱状图显示效果动画控制代码 animation_delay=500, animation_easing="cubicOut"), theme=ThemeType.MACARONS, # 柱状图显示主题 page_title="Bar Learn", # 设置html页面标题 )) # .reversal_axis() # 翻转XY轴 .add_xaxis(["草莓", "芒果", "葡萄", "雪梨", "西瓜", "柠檬", "车厘子"]).add_yaxis( "A", Faker.values(), category_gap="50%", # 柱间距对应的控制代码 markpoint_opts=opts.MarkPointOpts(), is_selected=True # A系列柱子是否显示对应的控制代码 ).set_global_opts( title_opts=opts.TitleOpts( # 标题 title="Bar-参数使用例子", subtitle="副标题"), toolbox_opts=opts.ToolboxOpts(), # toolbox 工具箱配置 yaxis_opts=opts.AxisOpts(position="right", name="Y轴"), # Y轴右侧控制 datazoom_opts=opts.DataZoomOpts(), # 数据区域放大缩小设置 ).set_series_opts( itemstyle_opts={ # A系列柱子颜色渐变对应的控制代码 "normal": { "color": JsCode(""" new echarts.graphic.LinearGradient( 0, 0, 0, 1, [{ offset: 0, color: 'rgba(0, 244, 255, 1)'}, { offset: 1, color: 'rgba(0, 77, 167, 1)'}], false)"""), "barBorderRadius": [6, 6, 6, 6], "shadowColor": 'rgb(0, 160, 221)', } }, # A系列柱子最大和最小值标记点对应的控制代码 markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ]), # A系列柱子最大和最小值标记线对应的控制代码 markline_opts=opts.MarkLineOpts(data=[ opts.MarkLineItem(type_="min", name="最小值"), opts.MarkLineItem(type_="max", name="最大值") ]))) return c
def line_u() -> Line: c = ( Line(opts.InitOpts( bg_color='#FFFFFF', width='800px', height='500px')).add_xaxis(arr).add_yaxis( "Ua(V)", val[0], color='orangered', is_symbol_show=False, markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min") ])).add_yaxis( "Ub(V)", val[1], color='mediumseagreen', is_symbol_show=False, markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min") ])).add_yaxis( "Uc(V)", val[2], color='orange', is_symbol_show=False, markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min") ])).add_yaxis( "上限", paras[0], linestyle_opts=opts.LineStyleOpts(width=1.5, type_='dashed'), is_symbol_show=False).add_yaxis( "下限", paras[1], linestyle_opts=opts.LineStyleOpts( width=1.5, type_='dashed'), is_symbol_show=False).set_global_opts( title_opts=opts.TitleOpts( title='电压趋势图', subtitle='日期:' + df.Date.iloc[0] + ' to ' + df.Date.iloc[-1], ), yaxis_opts=opts.AxisOpts(min_=190, max_=250)) # title_textstyle_opts=opts.series_options.TextStyleOpts(color='#fff'), # subtitle_textstyle_opts=opts.series_options.TextStyleOpts(color='#fff') ) return c
def foregin_history_all(): path = readPath + '/各国历史疫情信息' path2 = savaPath + '/各国历史疫情信息' dwf.createFile(path2) Filelist = [] # 将当前文件夹内的所有表名存放此列表 for home, dirs, files in os.walk(path): for filename in files: Filelist.append(filename) for i in Filelist: data = pd.read_excel(readPath + '/各国历史疫情信息/%s' % (i), index=False) n = i[:-5] # 只提取国家名,不要后缀(.xlsx) y1_confirm = data['confirm'] y2_confirm_add = data['confirm_add'] y3_heal = data['heal'] y4_dead = data['dead'] date_list = [] for j in data['date']: date_list.append(j) x = date_list lines = ( Line() .add_xaxis(xaxis_data=x) .add_yaxis(series_name='确诊人数', y_axis=y1_confirm, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ])) .add_yaxis(series_name='增加确诊人数', y_axis=y2_confirm_add, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ])) .add_yaxis(series_name='治愈人数', y_axis=y3_heal, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ])) .add_yaxis(series_name='死亡人数', y_axis=y4_dead, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ])) .set_global_opts(title_opts=opts.TitleOpts(title="%s" % (n) + "疫情走势", subtitle="数据来源:腾讯新闻"), yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=10, interval=3))) ) # lines.render(savaPath + '\\daliy_changes_view\\各国历史疫情信息\\%s.html' % (n), index=False) if flag: dwf.write_to_file(savaPath + '/各国历史疫情信息/%s.txt' % (n),str(lines.dump_options_with_quotes())) page.add(lines)
def line_base(self, date: list, price: list) -> Line: line = ( Line() .add_xaxis(xaxis_data=date) .add_yaxis( series_name="价格", y_axis=price, markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ] ), markline_opts=opts.MarkLineOpts( data=[opts.MarkLineItem(type_="average", name="平均值")] ), ) .set_global_opts( title_opts=opts.TitleOpts(title="历史价格记录"), tooltip_opts=opts.TooltipOpts(trigger="axis"), toolbox_opts=opts.ToolboxOpts(is_show=False), xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), ) ) return line
def get_chart_of_date(date): # 一个只标注出对应年份,其他是空字符串的list date_mark = [0] * len(date_list) date_mark[date_list.index(date)] = dayly_count_list[date_list.index(date)] # print(date_mark) line_chart = (Line().add_xaxis(date_list).add_yaxis( "", dayly_count_list, linestyle_opts=opts.LineStyleOpts(width=3)).add_yaxis( "", date_mark, markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(type_='max')])).set_series_opts( label_opts=opts.LabelOpts(is_show=False)).set_global_opts( title_opts=opts.TitleOpts( title='2017年海口市5至10月正常天气滴滴每日出行总量', pos_top='50%'))) bar_chart = (Bar().add_xaxis(xaxis_data=hour_24_list).add_yaxis( series_name='', yaxis_data=hourly_count_list[date_list.index(date)], label_opts=opts.LabelOpts(is_show=True, position='top', formatter='{c}'), ).set_global_opts( xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=True)), yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=True)), title_opts=opts.TitleOpts(title=date + '各时段出行量 天气:' + weather_list[date_list.index(date)] + ', ' + weekday_list[date_list.index(date)]))) grid = (Grid().add(bar_chart, grid_opts=opts.GridOpts(pos_bottom="60%")).add( line_chart, grid_opts=opts.GridOpts(pos_top="60%"))) return grid
def base_select() -> 'html': the_region = request.form["the_region_selected"] dfs_base = df_base.query("region=='{}'".format(the_region)) c = ( Bar(init_opts=opts.InitOpts(theme=ThemeType.ESSOS)) .add_xaxis(dfs_base['地区'].tolist()) .add_yaxis(the_region, dfs_base['count'].tolist()) .set_global_opts(title_opts=opts.TitleOpts(title=the_region, subtitle=""), xaxis_opts=opts.AxisOpts(name="地区", axislabel_opts={"rotate": 45}), datazoom_opts=[opts.DataZoomOpts()]) .set_series_opts( label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ]) ) ) c.render("./static/tmp/echarts_2018bar.html") with open("./static/tmp/echarts_2018bar.html", encoding="utf8", mode="r") as f: plot_all = "".join(f.readlines()) data_str = dfs_base.to_html() return render_template('pyecharts.html', myechart=plot_all, the_res=data_str, the_select_region=regions_available_base, bottom_title="分析:柱状图", mark="base", )
def plot_one_y(df, title: str): df.index = pd.to_datetime(df['date']) df.sort_index(inplace=True) df = df.drop(['date'], axis=1) return (Line( init_opts=opts.InitOpts(width="1200px", height="400px")).add_xaxis( xaxis_data=df.index.strftime( '%Y-%m-%d').values.tolist()).add_yaxis( series_name=title.upper(), y_axis=np.round(df['r2'].values, 2).tolist(), is_smooth=True, label_opts=opts.LabelOpts(is_show=False), linestyle_opts=opts.LineStyleOpts(width=2), markline_opts=opts.MarkLineOpts( data=[opts.MarkLineItem(type_="average")]), ).set_global_opts( datazoom_opts=opts.DataZoomOpts(), legend_opts=opts.LegendOpts(pos_bottom="0%", pos_right='45%'), title_opts=opts.TitleOpts( title=title.upper(), pos_left='0%', ), tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), toolbox_opts=opts.ToolboxOpts(is_show=True), xaxis_opts=opts.AxisOpts(boundary_gap=False), yaxis_opts=opts.AxisOpts( axislabel_opts=opts.LabelOpts(formatter="{value}"), splitline_opts=opts.SplitLineOpts(is_show=True), ), ).set_series_opts(markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_='max', name='Max'), opts.MarkPointItem(type_='min', name='Min') ]), ))
def barSpeed(data) -> Bar: """ -- 按列车类型统计运行速度 :param data:list:[[X轴-类型名称], [Y轴-速度]] :return: Bar """ speed_bar = ( Bar(init_opts=opts.InitOpts(width='1000px', height='500px')).add_xaxis(data[0]). add_yaxis("车次数量", data[1], color='#8c4356').set_global_opts( legend_opts=opts.LegendOpts(is_show=False), # 不显示图例 xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts( rotate=0)), # 横坐标标签倾斜 yaxis_opts=opts.AxisOpts(name='公里/小时'), title_opts=opts.TitleOpts( title='按列车类型统计运行速度', title_textstyle_opts=opts.TextStyleOpts( font_size=20))).set_series_opts( label_opts=opts.LabelOpts(is_show=False), markline_opts=opts.MarkLineOpts( symbol='circle', precision=0, data=[ opts.MarkLineItem(name='平均', type_='average') ]), # 平均值线 markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="Max"), opts.MarkPointItem(type_="min", name="Min") ]), )) return speed_bar
def line_base(): chinaLine = ( Line() .add_xaxis(date_list) .add_yaxis('确诊', china_confirm, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ])) .add_yaxis('死亡', china_dead, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")])) .add_yaxis('治愈', china_heal, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")])) .add_yaxis('输入病例', china_importedCase, is_symbol_show=True, label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")])) .set_global_opts(title_opts=opts.TitleOpts(title="国内疫情走势", subtitle="数据来源:腾讯新闻"), yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=10, interval=3))) ) return chinaLine
def get_line(x, y, y_name, x_name): print(y_name) new_bar = (Bar().add_xaxis(x)) for y_label in y: new_bar.add_yaxis( y_label, y[y_label], color="#409EFF", label_opts=opt.LabelOpts(), # is_smooth=True, markline_opts=opt.MarkLineOpts( data=[opt.MarkLineItem(type_="average")]), markpoint_opts=opt.MarkPointOpts( data=[opt.MarkPointItem(type_='max', name="最大值")])) new_bar.set_series_opts(areastyle_opts=opt.AreaStyleOpts(opacity=0.5), label_opts=opt.LabelOpts(is_show=False)) new_bar.set_global_opts( datazoom_opts=opt.DataZoomOpts(type_='inside'), legend_opts=opt.LegendOpts(is_show=True), yaxis_opts=opt.AxisOpts( name=y_name, name_textstyle_opts=opt.TextStyleOpts(color="black")), xaxis_opts=opt.AxisOpts( name=x_name, name_textstyle_opts=opt.TextStyleOpts(color="black"), type_="category", )), return new_bar.dump_options_with_quotes()
def other_line() -> Line: url = 'https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/cases_time/FeatureServer/0/query?f=json&where=Report_Date%3C%3D%272020-02-01%2015%3A59%3A59%27&returnGeometry=false&spatialRel=esriSpatialRelIntersects&outFields=*&orderByFields=Report_Date%20asc&resultOffset=0&resultRecordCount=2000&cacheHint=true' r_data = json.loads(requests.get(url).text) data = r_data['features'] #初始化json数据,为dict ['chinaTotal'] dates = [] numbers = [] for i in data: date = time.strftime( "%m.%d", time.localtime(i['attributes']['Report_Date'] / 1000)) dates.append(date) numbers.append(i['attributes']['Other_Locations']) c = ( Line(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE)) #设置主题 .add_xaxis(dates) #直接列表 .add_yaxis('确诊', numbers).set_global_opts( title_opts=opts.TitleOpts(title="2019-nCov 海外国家疫情分析", subtitle=""), toolbox_opts=opts.ToolboxOpts(is_show=True), # ).set_series_opts( # 设置系列配置 markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ]), areastyle_opts=opts.AreaStyleOpts(opacity=0.5), label_opts=opts.LabelOpts(is_show=False), )) return c
def Getline(dataX, dataY, n=[0], T=""): chinaLine = ( Line(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC)) .add_xaxis(dataX) .set_global_opts( title_opts=opts.TitleOpts(title="{}月情感变化{}".format(n[0], T)), toolbox_opts=opts.ToolboxOpts(is_show=True), ) .set_series_opts( label_opts=opts.LabelOpts(is_show=False), ) ) for i in range(len(dataY)): chinaLine.add_yaxis('{}月情感变化'.format(n[i]), dataY[i], is_symbol_show=False, label_opts=opts.LabelOpts(is_show=True), markline_opts=opts.MarkLineOpts( data=[ opts.MarkLineItem(type_="average", name="平均值"), opts.MarkLineItem(symbol="none", x="90%", y="max"), # opts.MarkLineItem(symbol="circle", type_="max", name="最高点"), ] ), markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max"), ]), is_smooth=True) # chinaLine.render() return chinaLine.render_embed()
def barCompanyOut(data) -> Bar: # 全国民航机场进出港航班数量(TOP 15) company_out_bar = ( Bar(init_opts=opts.InitOpts(width='1000px', height='500px')).add_xaxis(data[0]). add_yaxis("航空公司", data[1], color='#574266').set_global_opts( legend_opts=opts.LegendOpts(is_show=False), # 不显示图例 datazoom_opts=[ opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside") ], # DataZoom类型 title_opts=opts.TitleOpts( title='本周航空公司出港航班数量统计', title_textstyle_opts=opts.TextStyleOpts( font_size=20), # 设置标题大小 subtitle='{}-{},本周发送航班最多的航空公司是:{},{},{}。[数据来源:ctrip.com]'. format( data[2], data[3], data[4], data[5], data[6]))).set_series_opts( label_opts=opts.LabelOpts(is_show=False), # 不显示标签值 markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="Max"), opts.MarkPointItem(type_="min", name="Min"), ]), # 最大值,最小值 markline_opts=opts.MarkLineOpts( symbol='circle', precision=0, data=[ opts.MarkLineItem(name='平均', type_='average') ]) # 平均值线 )) return company_out_bar
def set_process() -> Bar: """ 进程调度比较图 :return: """ index = ['时间片轮转调度', '短进程优先调度', '非剥夺优先级调度'] data = [217, 459, 324] bar = ( Bar() .add_xaxis(index) .add_yaxis(series_name='三大调度算法', yaxis_data=data) .set_global_opts(title_opts=opts.TitleOpts(title='三大算法调度性能分析'), xaxis_opts=opts.AxisOpts(type_='category', name='算法名称'), yaxis_opts=opts.AxisOpts(type_='value', name='获胜次数', axislabel_opts=opts.LabelOpts(formatter='{value}/次')), toolbox_opts=opts.ToolboxOpts(), tooltip_opts=opts.TooltipOpts(axis_pointer_type='cross') ) .set_series_opts(markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(name='最大值', type_='min'), opts.MarkPointItem(name='最大值', type_='max')]), itemstyle_opts={ "normal": { "color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: 'rgba(0, 244, 255, 1)' }, { offset: 1, color: 'rgba(0, 77, 167, 1)' }], false)"""), "barBorderRadius": [30, 30, 30, 30], "shadowColor": 'rgb(0, 160, 221)', }} ) ) return bar
def bar_datazoom_inside() -> Timeline: tl = Timeline() for i in range(2014, 2020): c = ( Bar( init_opts=opts.InitOpts( animation_opts=opts.AnimationOpts( animation_delay=1000, animation_easing="elasticOut" ) ) ) .add_xaxis(list(zip(list(data总.set_index('类别').index)))) .add_yaxis("显示",list(data总["{}".format(i)])) .set_global_opts( title_opts=opts.TitleOpts(title="纵横小说月票榜"), datazoom_opts=opts.DataZoomOpts(type_="inside"), visualmap_opts=opts.VisualMapOpts(type_="color", max_=250000, min_=200,pos_right='20',pos_top='middle'), toolbox_opts=opts.ToolboxOpts(), ) .set_series_opts( label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts( data=[ opts.MarkPointItem(type_="max", name="最大值"), opts.MarkPointItem(type_="min", name="最小值"), ] ), ) ) tl.add(c, "{}年".format(i)) return tl
def barDistance(data) -> Bar: """ -- 按运行里程区间统计车次数量 :param data:list:[[X轴-里程区间], [Y轴-车次数量]] :return: Bar """ distance_bar = ( Bar(init_opts=opts.InitOpts(width='1000px', height='500px')).add_xaxis(data[0]). add_yaxis("车次数量", data[1], color='#425066').set_global_opts( legend_opts=opts.LegendOpts(is_show=False), # 不显示图例 xaxis_opts=opts.AxisOpts( axislabel_opts=opts.LabelOpts(rotate=30), name='公里'), # 横坐标标签倾斜 yaxis_opts=opts.AxisOpts(name='次'), title_opts=opts.TitleOpts( title='按运行里程区间统计车次数量', title_textstyle_opts=opts.TextStyleOpts( font_size=20))).set_series_opts( label_opts=opts.LabelOpts(is_show=False), markline_opts=opts.MarkLineOpts( symbol='circle', precision=0, data=[ opts.MarkLineItem(name='平均', type_='average') ]), # 平均值线 markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="Max"), opts.MarkPointItem(type_="min", name="Min") ]), )) return distance_bar
def line_pf() -> Line: c = (Line(opts.InitOpts( bg_color='#FFFFFF', width='800px', height='500px')).add_xaxis(arr).add_yaxis( "功率因数", val[13], color='LightSkyBlue', is_symbol_show=False, markline_opts=opts.MarkLineOpts( data=[opts.MarkLineItem(type_="average")]), areastyle_opts=opts.AreaStyleOpts(opacity=0.4), markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max"), opts.MarkPointItem(type_="min") ])).add_yaxis( "下限(0.9)", paras[5], linestyle_opts=opts.LineStyleOpts(width=1.5, type_='dashed'), is_symbol_show=False).set_series_opts( label_opts=opts.LabelOpts(is_show=False)).set_global_opts( title_opts=opts.TitleOpts( title='功率因数趋势图', subtitle='日期:' + df.Date.iloc[0] + ' to ' + df.Date.iloc[-1], ))) return c
def line_markpoint_custom(): x, y = Faker.choose(), Faker.values() obj_l = Line() obj_l.add_xaxis(x) obj_l.add_yaxis("商家A", y, markpoint_opts=opts.MarkPointOpts( data=[opts.MarkPointItem(name="自定义标记点", coord=[x[2], y[2]], value=y[2])] ) ) obj_l.set_series_opts( # 设置该参数,则x对应的y值会显示出来,该参数默认为True label_opts=opts.LabelOpts(is_show=False), ) obj_l.set_global_opts( title_opts=opts.TitleOpts(title="Line-MarkPoint(自定义)",subtitle="自定义标注"), xaxis_opts=opts.AxisOpts( name="x轴", # 坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样,可设置x轴刻度顶格 boundary_gap=True, # 类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。 axistick_opts=opts.AxisTickOpts(is_align_with_label=True) ), ) return obj_l
def barTime(self, data) -> Bar: # 进出港航班数量按小时统计 time_bar = ( Bar(init_opts=opts.InitOpts(width='1000px', height='500px')). add_xaxis(data[0][0]).add_yaxis( "{}航班数量".format(data[2]), data[0][1], color='#1685a9').set_series_opts( label_opts=opts.LabelOpts(is_show=False), markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="Max"), opts.MarkPointItem(type_="min", name="Min"), ]), markline_opts=opts.MarkLineOpts( symbol='circle', precision=0, data=[opts.MarkLineItem(name='平均', type_='average')])). set_global_opts( legend_opts=opts.LegendOpts(is_show=False), # 不显示图例 xaxis_opts=opts.AxisOpts(name_rotate=30), # 【【【X坐标轴标签倾斜,不好使】】】 title_opts=opts.TitleOpts( title='{}航班数量按小时统计'.format(data[2]), title_textstyle_opts=opts.TextStyleOpts( font_size=20), # 设置标题大小 subtitle='{},全国共{}航班{}架次。[数据来源:ctrip.com]'.format( self.today_ymd, data[2], data[1])))) return time_bar
def draw_charts(product_name, case_name, total_secs, qps, latency): secs = range(0, int(total_secs), int(total_secs / 100)) secs.append(int(total_secs)) c = (Line( init_opts=opts.InitOpts(width="1600px", height="800px") ).add_xaxis(xaxis_data=secs).add_yaxis( series_name="QPS", y_axis=qps, markpoint_opts=opts.MarkPointOpts(data=[ opts.MarkPointItem(type_="max", name="Max Value"), opts.MarkPointItem(type_="min", name="Min Value"), ]), markline_opts=opts.MarkLineOpts( data=[opts.MarkLineItem(type_="average", name="Average QPS")]), ).add_yaxis( series_name="Latency", y_axis=latency, markline_opts=opts.MarkLineOpts( data=[opts.MarkLineItem(type_="average", name="Average Latency")]), ).set_global_opts( title_opts=opts.TitleOpts(title="QPS", subtitle="DML only"), tooltip_opts=opts.TooltipOpts(trigger="axis"), toolbox_opts=opts.ToolboxOpts(is_show=True), xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), ).render("sysbench-" + product_name + '-' + case_name + ".html"))