def getRadar(self, sheet: xlrd.sheet) -> Radar: namelist = sheet.col_values(0, 1) maxvaluelist = sheet.col_values(1, 1) maxlist = [ opts.RadarIndicatorItem(name=namelist[i], max_=maxvaluelist[i]) for i in range(len(namelist)) ] valuelists = dict() for i in range(2, sheet.ncols): valuelists[sheet.cell(0, i).value] = sheet.col_values(i, 1) r = Radar() r.add_schema( schema=maxlist, splitarea_opt=opts.SplitAreaOpts( is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)), textstyle_opts=opts.TextStyleOpts(color="#fff"), ) #设置颜色的列表 colorstr = ["#CD0000", "#5CACEE", "#7B68EE", "#FFFF00"] colorth = 0 for name, values in valuelists.items(): r.add( series_name=name, data=values, linestyle_opts=opts.LineStyleOpts(color=colorstr[colorth]), ) colorth = (colorth + 1) % len(colorstr) #颜色循环 r.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) r.set_global_opts(title_opts=opts.TitleOpts( title=sheet.name, title_textstyle_opts=opts.TextStyleOpts(color="#fff")), legend_opts=opts.LegendOpts()) return r
def DrawRadar(city_name): schema = [('最高气温', 45), ('气压', 1500), ('湿度', 100), ('最低气温', 45), ('PM2.5', 200)] data = qr.get_data(city_name) values = [[int(data['Htemperature']), int(data['QY']), int(data['SD'].strip('%')), int(data['Ltemperature']), int(data['pm25'])]] radar = Radar() radar.config(schema) radar.add('%s天气信息' % city_name, values, is_splitline=True, is_axisline_show=True) radar.render('weatherRadar.html')
def radar_product_rating_base(): """ 此函数用于获取产品多维评价的雷达图的参数。 Returns ------- tl : TYPE-echarts parameters return echarts parameters. """ # data query dataX, products, list_dataY = product_rating_query() c_schema = [] for i in range(len(dataX)): c_schema.append({"name":dataX[i],"max":5,"min":0}) # Declare objects, render pictures tl = Timeline() for i in range(len(products)): c = ( Radar(init_opts=opts.InitOpts(width="1280px", height="720px")) .add_schema(schema=c_schema, splitarea_opt=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)), textstyle_opts=opts.TextStyleOpts(color="#fff"), ) .add(series_name=products[i], data=[list(list_dataY[i])], linestyle_opts=opts.LineStyleOpts(color="#CD0000"), ) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts(title_opts=opts.TitleOpts(title="Multi-dimensional analysis of product performance"), legend_opts=opts.LegendOpts(pos_left="80%", pos_top="50%")) ) tl.add(c, "{}".format(products[i])) return tl
def radar_base(data, email_max_number, copy_max_number, copied_max_number, receiver_max_num, mail_server_max_number) -> Radar: radar = ( Radar(init_opts=opts.InitOpts(width="1280px", height="720px")) .add_schema( schema=[ opts.RadarIndicatorItem(name="邮件数量", max_=email_max_number), opts.RadarIndicatorItem(name="含有抄送的邮件数量", max_=copy_max_number), opts.RadarIndicatorItem(name="被抄送的邮件数量", max_=copied_max_number), opts.RadarIndicatorItem(name="联系人数量", max_=receiver_max_num), opts.RadarIndicatorItem(name="服务器个数", max_=mail_server_max_number), ], splitarea_opt=opts.SplitAreaOpts( is_show=True ), textstyle_opts=opts.TextStyleOpts(color="#000000"), ) ) for mailbox in data: tot = 0 for num in data[mailbox][0]: tot += num if num is not 0: radar.add( series_name=mailbox, data=data[mailbox], linestyle_opts=opts.LineStyleOpts(color=utils.randomColor(), width=1), ) radar.set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts( legend_opts=opts.LegendOpts() ) return radar
def user_ability_radar(v1, v2) -> Radar: radar = (Radar(init_opts=opts.InitOpts()).add_schema( schema=[ opts.RadarIndicatorItem(name="字符串", max_=100), opts.RadarIndicatorItem(name="线性表", max_=100), opts.RadarIndicatorItem(name="数组", max_=100), opts.RadarIndicatorItem(name="查找算法", max_=100), opts.RadarIndicatorItem(name="排序算法", max_=100), opts.RadarIndicatorItem(name="数字操作", max_=100), opts.RadarIndicatorItem(name="树结构", max_=100), opts.RadarIndicatorItem(name="图结构", max_=100), ], splitarea_opt=opts.SplitAreaOpts( is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)), textstyle_opts=opts.TextStyleOpts(color="#000"), ).add( series_name="学生平均得分", data=v2, linestyle_opts=opts.LineStyleOpts(color="#5CACEE", width=3, opacity=0.7), ).add( series_name="学生能力评估", data=v1, linestyle_opts=opts.LineStyleOpts(color="#CD0000", width=3, opacity=0.7), ).set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts(title_opts=opts.TitleOpts(), legend_opts=opts.LegendOpts())) return radar
def radar_selected_mode() -> Radar: DaLuan = list[1:10] print(list[:10]) random.shuffle(DaLuan) print(DaLuan) c = ( Radar() .add_schema(textstyle_opts={'color':'#c7a252',"fontSize": 16,},#文字样式的颜色 schema=[ opts.RadarIndicatorItem(name=list[0][0], max_=max), opts.RadarIndicatorItem(name=DaLuan[0][0], max_=max), opts.RadarIndicatorItem(name=DaLuan[1][0], max_=max ), opts.RadarIndicatorItem(name=DaLuan[2][0], max_=max ), opts.RadarIndicatorItem(name=DaLuan[3][0], max_=max), opts.RadarIndicatorItem(name=DaLuan[4][0], max_=max), opts.RadarIndicatorItem(name=DaLuan[5][0], max_=max), opts.RadarIndicatorItem(name=DaLuan[6][0], max_=max), opts.RadarIndicatorItem(name=DaLuan[7][0], max_=max), opts.RadarIndicatorItem(name=DaLuan[8][0], max_=max), ], ) .add("Top10能力要求", [[max]+[DaLuan[i][1] for i in range(0,9)]], areastyle_opts={"color": '#009ad6'},linestyle_opts={"color": '#009ad6'}) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( legend_opts=opts.LegendOpts(selected_mode="single"), title_opts=opts.TitleOpts(title="岗位技能雷达图"), ) ) return c
def reder_base(v1,v2,v3): c=( Radar() .add_schema( schema=[ opts.RadarIndicatorItem(name='动画',max_=650000), opts.RadarIndicatorItem(name='娱乐',max_=650000), opts.RadarIndicatorItem(name='影视',max_=650000), opts.RadarIndicatorItem(name='时尚',max_=650000), opts.RadarIndicatorItem(name='游戏',max_=650000), opts.RadarIndicatorItem(name='生活',max_=650000), opts.RadarIndicatorItem(name='科技',max_=650000), opts.RadarIndicatorItem(name='音乐',max_=650000), opts.RadarIndicatorItem(name='鬼畜',max_=650000), ] ) #添加指标,设置线条颜色 .add('投币',v1,color='#49010F') .add('点赞',v2,color='#C16200') .add('收藏',v3,color='#881600') .set_series_opts( #不显示指标数值 label_opts=opts.LabelOpts(is_show=False), # 设置线条格式,宽度为3,样式为虚线 linestyle_opts=opts.LineStyleOpts(width=3,type_='dotted'), ) .set_global_opts(title_opts=opts.TitleOpts(title='top100各分区三连情况')) ) return c
def radar(schema, radar_data: list[dict]) -> Radar: """ 绘制【不同星级商户在"菜价菜量", "口味", "环境", "服务", "交通"方面综合评估】的雷达图需求 8.1 设置主题"purple-passion"; 8.2 标题”星级商铺评分“ 8.3 返回c :param schema: 雷达图的坐标系配置项 :param radar_data: 雷达图的数据系列配置项 :return: 绘制的雷达图对象 """ c = (Radar(init_opts=opts.InitOpts( theme=ThemeType.PURPLE_PASSION)).set_global_opts( title_opts=opts.TitleOpts("星级商铺评分"), legend_opts=opts.LegendOpts( orient="horizontal", align="left")).add_schema(schema=schema)) # 添加各种配置数据 for data_item in radar_data: c.add(series_name=data_item["series_name"], data=data_item["data"], color=data_item["color"], label_opts=data_item["label_opts"], areastyle_opts=data_item["areastyle_opts"]) return c
def radar_base(): c = ( Radar().add_schema(schema=[ opts.RadarIndicatorItem(name='动画', max_=650000), opts.RadarIndicatorItem(name='娱乐', max_=650000), opts.RadarIndicatorItem(name='影视', max_=650000), opts.RadarIndicatorItem(name='时尚', max_=650000), opts.RadarIndicatorItem(name='游戏', max_=650000), opts.RadarIndicatorItem(name='生活', max_=650000), opts.RadarIndicatorItem(name='科技', max_=650000), opts.RadarIndicatorItem(name='音乐', max_=650000), opts.RadarIndicatorItem(name='鬼畜', max_=650000), ]) #添加指标,设置线条颜色 .add('投币', [top_100['coin'].tolist()], color='#49010F').add( '点赞', [top_100['like'].tolist()], color='#C16200').add( '收藏', [top_100['favorite'].tolist()], color='#881600').set_series_opts( #不显示指标数值 label_opts=opts.LabelOpts(is_show=False), # 设置线条格式,宽度为3,样式为虚线 linestyle_opts=opts.LineStyleOpts(width=3, type_='dotted'), ).set_global_opts(title_opts=opts.TitleOpts( title='Operations on top100')).dump_options_with_quotes()) return c
def radar_simple() -> Radar: c = ( Radar().add_schema( # 各项的max_值可以不同 schema=[ opts.RadarIndicatorItem(name='计算几何学', max_=100), opts.RadarIndicatorItem(name='动态规划', max_=100), opts.RadarIndicatorItem(name='图论', max_=100), opts.RadarIndicatorItem(name='搜索', max_=100), opts.RadarIndicatorItem(name='模拟', max_=100), opts.RadarIndicatorItem(name='数论', max_=100), ]).add( '旺神', [[random.randint(10, 101) for _ in range(6)]], color='red', areastyle_opts=opts.AreaStyleOpts( #设置填充的属性 opacity=0.5, color='red'), ).add( '蔡队', [[random.randint(10, 101) for _ in range(6)]], color='blue', areastyle_opts=opts.AreaStyleOpts( opacity=0.5, #透明度 color='blue'), ).set_series_opts(label_opts=opts.LabelOpts( is_show=True)).set_global_opts(title_opts=opts.TitleOpts( title='雷达图示例-ACM集训队队员能力'))) return c
def radar_base() -> Radar: rl = [] with open("Ex3.6.3.csv", "r") as f: rL = f.read().split("\n") data = [] for i in range(1, len(rL) - 1): data.append(rL[i].split(",")) c = (Radar().add_schema(schema=[ opts.RadarIndicatorItem(name="Violent", max_=1000), opts.RadarIndicatorItem(name="Property", max_=5000), opts.RadarIndicatorItem(name="Murder", max_=10), opts.RadarIndicatorItem(name="Rape", max_=100), opts.RadarIndicatorItem(name="Robbery", max_=500), opts.RadarIndicatorItem(name="Assault", max_=1000), opts.RadarIndicatorItem(name="Burglary", max_=1000), opts.RadarIndicatorItem(name="Larceny", max_=3000), opts.RadarIndicatorItem(name="Auto", max_=1000), opts.RadarIndicatorItem(name="Inmates", max_=1000), ]).set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts( legend_opts=opts.LegendOpts(selected_mode="single"), title_opts=opts.TitleOpts(title="2014年美国各州犯罪率"))) for i in range(len(data)): c.add(data[i][0], [list(map(float, data[i][1:]))]) return c
def test_radar_item_base(fake_writer): series_names = ["预算分配", "实际开销"] series_data = [ [4300, 10000, 28000, 35000, 50000, 19000], [5000, 14000, 28000, 31000, 42000, 21000], ] radar_item = [ opts.RadarItem(name=d[0], value=d[1]) for d in list(zip(series_names, series_data)) ] c = (Radar().add_schema(schema=[ opts.RadarIndicatorItem(name="销售", max_=6500), opts.RadarIndicatorItem(name="管理", max_=16000), opts.RadarIndicatorItem(name="信息技术", max_=30000), opts.RadarIndicatorItem(name="客服", max_=38000), opts.RadarIndicatorItem(name="研发", max_=52000), opts.RadarIndicatorItem(name="市场", max_=25000), ]).add("", radar_item).set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts(title_opts=opts.TitleOpts( title="Radar-基本示例"))) c.render() _, content = fake_writer.call_args[0] assert_equal(c.theme, "white") assert_equal(c.renderer, "canvas")
def drawer2(stage_name, data): c_schema = [ { "name": "乐", "max": 0.55, "min": 0 }, { "name": "好", "max": 0.55, "min": 0 }, { "name": "哀", "max": 0.55, "min": 0 }, { "name": '恶', "max": 0.55, "min": 0 }, { "name": "惧", "max": 0.55, "min": 0 }, ] c = (Radar().set_colors(["#CC3300"]).add_schema( schema=c_schema, shape="circle", center=["50%", "50%"], radius="80%", angleaxis_opts=opts.AngleAxisOpts( min_=0, max_=360, is_clockwise=False, interval=5, axistick_opts=opts.AxisTickOpts(is_show=False), axislabel_opts=opts.LabelOpts(is_show=False), axisline_opts=opts.AxisLineOpts(is_show=False), splitline_opts=opts.SplitLineOpts(is_show=False), ), radiusaxis_opts=opts.RadiusAxisOpts( min_=-4, max_=4, interval=2, splitarea_opts=opts.SplitAreaOpts( is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)), ), polar_opts=opts.PolarOpts(), splitarea_opt=opts.SplitAreaOpts(is_show=False), splitline_opt=opts.SplitLineOpts(is_show=False), ).add( series_name=stage_name, data=data, areastyle_opts=opts.AreaStyleOpts(opacity=0.1), linestyle_opts=opts.LineStyleOpts(width=3), ).render("res\\output\\multi-emotion\\image\\" + stage_name + ".html"))
def radar(): r = (Radar().add_schema(schema=( opts.RadarIndicatorItem(v1[0], max_=v2[0]), opts.RadarIndicatorItem(v1[1], max_=v2[1]), opts.RadarIndicatorItem(v1[2], max_=v2[2]), opts.RadarIndicatorItem(v1[3], max_=v2[3]), )).add('物联网可视化', [v2]).set_global_opts(opts.TitleOpts(title='大数据比赛可视化项目'))) return r
def draw_centrality(): degree_centrality = nx.degree_centrality(G) closeness_centrality = nx.closeness_centrality(G) betweenness_centrality = nx.betweenness_centrality(G) degree_centrality_sort = sorted(degree_centrality, key=lambda x: degree_centrality[x], reverse=True) closeness_centrality_sort = sorted(closeness_centrality, key=lambda x: closeness_centrality[x], reverse=True) betweenness_centrality_sort = sorted(betweenness_centrality, key=lambda x: betweenness_centrality[x], reverse=True) top_authors = sorted( [(x, degree_centrality[x] + closeness_centrality[x] + betweenness_centrality[x]) for x in set.intersection( set(betweenness_centrality_sort[:30]), set(closeness_centrality_sort[:30]), set(degree_centrality_sort[:30]))], key=lambda x: x[1], reverse=True) table = prettytable.PrettyTable( ['Rank', 'Name', 'Degree centrality', 'Closeness centrality', 'Betweenness centrality', 'Sum centrality']) [table.add_row( [index + 1, value[0], round(degree_centrality[value[0]], 3), round(closeness_centrality[value[0]], 3), round(betweenness_centrality[value[0]], 3), round(value[1], 3)]) for index, value in enumerate(top_authors)] print(table) h_authors = set.intersection( set(betweenness_centrality_sort[:15]), set(closeness_centrality_sort[:15]), set(degree_centrality_sort[:15])) data = [[G.nodes[x]["name"], [betweenness_centrality[x], closeness_centrality[x], degree_centrality[x]]] for x in h_authors[:10]] c = ( Radar() .add_schema( schema=[ opts.RadarIndicatorItem(name="Betweenness centrality [0,0.15]", max_=0.15, min_=0), opts.RadarIndicatorItem(name="Closeness centrality [0,0.6]", max_=0.6, min_=0), opts.RadarIndicatorItem(name="Degree centrality [0,0.35]", max_=0.35, min_=0), ], shape="circle", center=["50%", "50%"], radius="80%", splitarea_opt=opts.SplitAreaOpts( is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1) ), textstyle_opts=opts.TextStyleOpts(color="#000"), ).set_series_opts(label_opts=opts.LabelOpts(is_show=False)) ) for x in data: color = randomcolor() c.add( series_name=x[0], data=[x[1]], areastyle_opts=opts.AreaStyleOpts(opacity=0.1, color=color), linestyle_opts=opts.LineStyleOpts(width=1, color=color), label_opts=opts.LabelOpts(is_show=False) ) return c
def tograph(self, arrayVal, name) -> Radar: value_bj = [arrayVal] c_schema = [ { "name": "speed", "max": 100 }, { "name": "dribbling", "max": 100 }, { "name": "shooting", "max": 100 }, { "name": "passing", "max": 100 }, { "name": "defence", "max": 100 }, { "name": "physical", "max": 100 }, { "name": "gk_diving", "max": 100 }, { "name": "gk_positioning", "max": 100 }, { "name": "gk_reflexes", "max": 100 }, { "name": "gk_gk_handling", "max": 100 }, { "name": "gk_kicking", "max": 100 }, ] c = (Radar().add_schema(schema=c_schema, shape="circle").add( name, value_bj, color="#f9713c").set_series_opts( label_opts=opts.LabelOpts(is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="Radar-Player"))) hname = str(time.time()) + '.html' c.render('./front-end/graph/' + hname) return hname
def RadarChart(BookNumsOfPubs: list, NamesOfPubs: list, AvgPoints: list, AvgPrice: list): ''' 出版物数量前10的出版社的数量和评分\n :param BookNumsOfPubs: 详见RankOfPublisher()函数 :param NamesOfPubs: 同上 :param AvgPoints: 同上 :param AvgPrice: 同上 :return: 画图函数,不知道能返回什么 ''' global dir_to_save AvgPrice = [[x * 80 for x in AvgPrice]] # 价格放大到原来的80倍 AvgPoints = [[math.exp(x) for x in tqdm(AvgPoints)]] # 平均分取指数,放大差异 BookNumsOfPubs = [[5 * x for x in BookNumsOfPubs]] # 书籍数量放大5倍,与放大后的评分在同一数量级,便于可视化 # 以上数据处理方式没有什么理论依据,仅仅是调整到了一个数量级。有关的统计学知识后续学习 ( Radar(init_opts=opts.InitOpts(width="1000px", height="500px", bg_color="#CCCCCC")) .add_schema( schema=[ opts.RadarIndicatorItem(name=NamesOfPubs[0], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[1], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[2], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[3], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[4], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[5], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[6], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[7], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[8], max_=5500), opts.RadarIndicatorItem(name=NamesOfPubs[9], max_=5500), ], splitarea_opt=opts.SplitAreaOpts( is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1) ), textstyle_opts=opts.TextStyleOpts(color="#228B22"), ) .add( series_name="平均分(取指数后)", data=AvgPoints, linestyle_opts=opts.LineStyleOpts(color="#D9173B"), ) .add( series_name="出版物数量(扩大5倍后)", data=BookNumsOfPubs, linestyle_opts=opts.LineStyleOpts(color="#0000CD"), ) .add( series_name="出版物均价(扩大80倍后)", data=AvgPrice, linestyle_opts=opts.LineStyleOpts(color="#FFD700"), ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts( title_opts=opts.TitleOpts(title="出版物数量前10的出版社"), legend_opts=opts.LegendOpts() ) .render(dir_to_save + "Top10PubsInBookNums_radar.html") ) print("Successfully drew Top10PubsInBookNums_radar")
def draw_centrality(): degree_centrality = nx.degree_centrality(G) closeness_centrality = nx.closeness_centrality(G) betweenness_centrality = nx.betweenness_centrality(G) degree_centrality_sort = sorted(degree_centrality, key=lambda x: degree_centrality[x], reverse=True) closeness_centrality_sort = sorted(closeness_centrality, key=lambda x: closeness_centrality[x], reverse=True) betweenness_centrality_sort = sorted( betweenness_centrality, key=lambda x: betweenness_centrality[x], reverse=True) h_authors = set.intersection(set(betweenness_centrality_sort[:15]), set(closeness_centrality_sort[:15]), set(degree_centrality_sort[:15])) data = [[ G.nodes[x]["name"], [ betweenness_centrality[x], closeness_centrality[x], degree_centrality[x] ] ] for x in h_authors] c = (Radar().add_schema( schema=[ opts.RadarIndicatorItem(name="Betweenness centrality [0,1]", max_=1, min_=0), opts.RadarIndicatorItem(name="Closeness centrality [0,0.6]", max_=0.6, min_=0), opts.RadarIndicatorItem(name="Degree centrality [0,0.1]", max_=0.1, min_=0), ], shape="circle", center=["50%", "50%"], radius="80%", splitarea_opt=opts.SplitAreaOpts( is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)), textstyle_opts=opts.TextStyleOpts(color="#000"), ).set_series_opts(label_opts=opts.LabelOpts(is_show=False))) for x in data: color = randomcolor() c.add(series_name=x[0], data=[x[1]], areastyle_opts=opts.AreaStyleOpts(opacity=0.1, color=color), linestyle_opts=opts.LineStyleOpts(width=1, color=color), label_opts=opts.LabelOpts(is_show=False)) c.render("radar_angle_radius_axis.html")
def radar_base(v1): c = (Radar().add_schema(schema=[ opts.RadarIndicatorItem(name="力荐", max_=100), opts.RadarIndicatorItem(name="推荐", max_=100), opts.RadarIndicatorItem(name="还行", max_=1000), opts.RadarIndicatorItem(name="较差", max_=100), opts.RadarIndicatorItem(name="很差", max_=100), ]).add("评价情感", [v1]).set_series_opts(label_opts=opts.LabelOpts( is_show=False)).set_global_opts(title_opts=opts.TitleOpts( title="评论情感雷达图")).dump_options_with_quotes()) return c
def radar_base() -> Radar: c = (Radar().add_schema(schema=[ opts.RadarIndicatorItem(name="销售", max_=6500), opts.RadarIndicatorItem(name="管理", max_=16000), opts.RadarIndicatorItem(name="信息技术", max_=30000), opts.RadarIndicatorItem(name="客服", max_=38000), opts.RadarIndicatorItem(name="研发", max_=52000), opts.RadarIndicatorItem(name="市场", max_=25000), ]).add("预算分配", v1).add("实际开销", v2).set_series_opts( label_opts=opts.LabelOpts(is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="Radar-基本示例"))) return c
def draw_radar_for_observation_result() -> Radar: value = [[43, 58, 78, 65, 86, 63]] min_val = 0 max_val = 100 # 用于调整雷达各维度的范围大小 c_schema = [{"name": "交往能力", "max": max_val, "min": min_val, }, {"name": "感知能力", "max": max_val, "min": min_val, "color": "#ff0000"}, {"name": "运动能力", "max": max_val, "min": min_val, "color": "#000000"}, {"name": "注意力", "max": max_val, "min": min_val, "color": "#00ffff"}, {"name": "语言能力", "max": max_val, "min": min_val, "color": "#ff00ff"}, {"name": "自我照顾能力", "max": max_val, "min": min_val, "color": "#ff00ff"} ] # 画图 radar = Radar(init_opts=opts.InitOpts(width="750px", height="500px")) # radar = Radar() radar.add_schema(c_schema, textstyle_opts=opts.TextStyleOpts(color="#3344ff")) radar.add(None, value, color="#f9713c", symbol='circle', label_opts=opts.LabelOpts(is_show=True), areastyle_opts=opts.AreaStyleOpts(opacity=0.5, color="#f9713c")) # radar.set_global_opts(title_opts=opts.TitleOpts(title="Radar-基本示例")) # radar.render("observation_result.html") return radar
def radar_base(schema, value, company_name) -> Radar: c = ( Radar() .add_schema( schema=schema, shape='circle', textstyle_opts=opts.TextStyleOpts(font_size=20), ) .add(company_name, value, areastyle_opts=opts.AreaStyleOpts(color='red', opacity=0.5)) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts(title_opts=opts.TitleOpts(title="雷达预警图")) ) return c
def plot_radar(series_radiant, series_dire): c_schema = [{ "name": "控制", "max": 15, "min": 0 }, { "name": "核心", "max": 15, "min": 0 }, { "name": "辅助", "max": 15, "min": 0 }, { "name": "逃生", "max": 15, "min": 0 }, { "name": "爆发", "max": 15, "min": 0 }, { "name": "先手", "max": 15, "min": 0 }, { "name": "耐久", "max": 15, "min": 0 }, { "name": "推进", "max": 15, "min": 0 }] radar = Radar() radar.add_schema(schema=c_schema) radar.add("radiant", series_radiant, color="#f9713c") radar.add("dire", series_dire, color="#b3e4a1") radar.render("Rader.html")
def test_radar_base(): c = (Radar().add_schema(schema=[ opts.RadarIndicatorItem(name="销售", max_=6500), opts.RadarIndicatorItem(name="管理", max_=16000), opts.RadarIndicatorItem(name="信息技术", max_=30000), opts.RadarIndicatorItem(name="客服", max_=38000), opts.RadarIndicatorItem(name="研发", max_=52000), opts.RadarIndicatorItem(name="市场", max_=25000), ]).add("预算分配", v1).add( "实际开销", v2).set_series_opts(label_opts=opts.LabelOpts(is_show=False))) eq_(c.theme, "white") eq_(c.renderer, "canvas") c.render()
def radar_plot(v1, v2, v3, i): m = max([max(v1[0]), max(v2[0]), max(v3[0])]) c = (Radar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT,width="640px", height="360px",bg_color="#CCCCCC")) .add_schema( shape='polygon', schema=[ opts.RadarIndicatorItem(name="焦虑", max_=m), opts.RadarIndicatorItem(name="悲伤", max_=m), opts.RadarIndicatorItem(name="愤怒", max_=m), opts.RadarIndicatorItem(name="喜悦", max_=m), opts.RadarIndicatorItem(name="感激", max_=m), opts.RadarIndicatorItem(name="信任", max_=m), ], splitarea_opt=opts.SplitAreaOpts( is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1) ), textstyle_opts=opts.TextStyleOpts(color="#fff"), ) .add( symbol = None, series_name="官方媒体", data=v1, linestyle_opts=opts.LineStyleOpts(width=1), areastyle_opts=opts.AreaStyleOpts(opacity=0.1), ) # .add("北京", value_bj, color=) # .add("上海", value_sh, color="#b3e4a1") # .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .add( symbol=None, series_name="大众心理", data=v2, linestyle_opts=opts.LineStyleOpts(color='#61a0a8'), areastyle_opts=opts.AreaStyleOpts(opacity=0.1,color='#61a0a8'),) ).add( series_name="自媒体", symbol=None, data=v3, areastyle_opts=opts.AreaStyleOpts(opacity=0.1,color="#fab27b"), linestyle_opts=opts.LineStyleOpts(color="#fab27b"), )\ .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\ .set_global_opts( title_opts=opts.TitleOpts(title="第"+str(i+1)+"阶段心态分析"), legend_opts=opts.LegendOpts() ) return c
def test_radar_base(fake_writer): c = (Radar().add_schema(schema=[ opts.RadarIndicatorItem(name="销售", max_=6500), opts.RadarIndicatorItem(name="管理", max_=16000), opts.RadarIndicatorItem(name="信息技术", max_=30000), opts.RadarIndicatorItem(name="客服", max_=38000), opts.RadarIndicatorItem(name="研发", max_=52000), opts.RadarIndicatorItem(name="市场", max_=25000), ]).add("预算分配", v1).add( "实际开销", v2).set_series_opts(label_opts=opts.LabelOpts(is_show=False))) c.render() _, content = fake_writer.call_args[0] assert_equal(c.theme, "white") assert_equal(c.renderer, "canvas")
def radar_selected_mode() -> Radar: c = (Radar().add_schema(schema=[ opts.RadarIndicatorItem(name="销售", max_=6500), opts.RadarIndicatorItem(name="管理", max_=16000), opts.RadarIndicatorItem(name="信息技术", max_=30000), opts.RadarIndicatorItem(name="客服", max_=38000), opts.RadarIndicatorItem(name="研发", max_=52000), opts.RadarIndicatorItem(name="市场", max_=25000), ]).add("预算分配", v1).add("实际开销", v2).set_series_opts( label_opts=opts.LabelOpts(is_show=False)).set_global_opts( legend_opts=opts.LegendOpts(selected_mode="single"), title_opts=opts.TitleOpts(title="Radar-单例模式"), )) return c
def tographt(self, arrayVal, name) -> Radar: value_bj = [arrayVal] c_schema = [ { "name": "buildUpPlaySpeed", "max": 100 }, { "name": "buildUpPlayDribbling", "max": 100 }, { "name": "buildUpPlayPassing", "max": 100 }, { "name": "chanceCreationCrossing", "max": 100 }, { "name": "chanceCreationPassing", "max": 100 }, { "name": "chanceCreationShooting", "max": 100 }, { "name": "defenceAggression", "max": 100 }, { "name": "defencePressure", "max": 100 }, { "name": "defenceTeamWidth", "max": 100 }, ] c = (Radar().add_schema(schema=c_schema, shape="circle").add( name, value_bj, color="#f9713c").set_series_opts( label_opts=opts.LabelOpts(is_show=False)).set_global_opts( title_opts=opts.TitleOpts(title="Radar-Player"))) hname = str(time.time()) + '.html' c.render('./front-end/graph/' + hname) return hname
def radar_demo(): radar = Radar() # data1 = [[12, 0, 2, 18, 0, 1]] radar_data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]#降水量 # schema = [ # ("执行成功", 20), ("执行失败", 5), ("执行异常", 5), # ("回滚成功", 20), ("回滚失败", 5), ("执行中断", 5) # ] schema = [ ("Jan", 5), ("Feb", 10), ("Mar", 10), ("Apr", 50), ("May", 50), ("Jun", 200), ("Jul", 200), ("Aug", 200), ("Sep", 50), ("Oct", 50), ("Nov", 10), ("Dec", 5) ] radar.add_schema(schema) radar.add("执行状态", radar_data1) radar.render("/aa.html")
def student_grade_radar(student_grade: StudentGrade) -> Radar: """ 生成该考生本次考试的排名雷达图。 :param student_grade: 本次考试成绩StudentGrade对象 :return: radar: Radar图表 """ subjects = Subject.subjects_by_grade(student_grade) data = {'student_ranking': [], 'average_ranking': [], 'high_ranking': []} for subject in subjects: data['student_ranking'].append( GradeRanking.grade2ranking( student_grade.test, student_grade.grade_dict()[subject], subject, student_grade.subject)) data['average_ranking'].append(TestAverageGrade.query.filter_by( subject='理科', test_time=student_grade.test_time).first() .__dict__[subject + '_ranking']) data['high_ranking'].append(TestHighGrade.query.filter_by( subject='理科', test_time=student_grade.test_time).first() .__dict__[subject + '_ranking']) radar = ( Radar(init_opts=opts.InitOpts(bg_color='#fef8ef')) .add_schema( schema=[ opts.RadarIndicatorItem( name=subject, color='#778899', max_=max( data['student_ranking'] + data['average_ranking'] + data['high_ranking']) + 50 ) for subject in subjects ], textstyle_opts=opts.TextStyleOpts(font_size=18) ) .set_global_opts(title_opts=opts.TitleOpts('名次雷达图'), ) .set_series_opts() .add('本次排名', [data['student_ranking']], color='#d7ab82', linestyle_opts=opts.LineStyleOpts(width=2.5), label_opts=opts.LabelOpts(is_show=True, font_size=14), tooltip_opts=opts.TooltipOpts(is_show=False)) .add('平均排名', [data['average_ranking']], color='#919e8b', linestyle_opts=opts.LineStyleOpts(width=2.5), label_opts=opts.LabelOpts(is_show=True, font_size=14), tooltip_opts=opts.TooltipOpts(is_show=False)) .add('高分线排名', [data['high_ranking']], color='#d87c7c', linestyle_opts=opts.LineStyleOpts(width=2.5), label_opts=opts.LabelOpts(is_show=True, font_size=14), tooltip_opts=opts.TooltipOpts(is_show=False)) ) return radar