def test_more(): page = Page() # line attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line = Line("折线图示例") line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"]) page.add(line) # pie attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图-圆环图示例", title_pos='center') pie.add("", attr, v1, radius=[40, 75], label_text_color=None, is_label_show=True, legend_orient='vertical', legend_pos='left') page.add(pie) # kline v1 = [[2320.26, 2320.26, 2287.3, 2362.94], [2300, 2291.3, 2288.26, 2308.38], [2295.35, 2346.5, 2295.35, 2345.92], [2347.22, 2358.98, 2337.35, 2363.8], [2360.75, 2382.48, 2347.89, 2383.76], [2383.43, 2385.42, 2371.23, 2391.82], [2377.41, 2419.02, 2369.57, 2421.15], [2425.92, 2428.15, 2417.58, 2440.38], [2411, 2433.13, 2403.3, 2437.42], [2432.68, 2334.48, 2427.7, 2441.73], [2430.69, 2418.53, 2394.22, 2433.89], [2416.62, 2432.4, 2414.4, 2443.03], [2441.91, 2421.56, 2418.43, 2444.8], [2420.26, 2382.91, 2373.53, 2427.07], [2383.49, 2397.18, 2370.61, 2397.94], [2378.82, 2325.95, 2309.17, 2378.82], [2322.94, 2314.16, 2308.76, 2330.88], [2320.62, 2325.82, 2315.01, 2338.78], [2313.74, 2293.34, 2289.89, 2340.71], [2297.77, 2313.22, 2292.03, 2324.63], [2322.32, 2365.59, 2308.92, 2366.16], [2364.54, 2359.51, 2330.86, 2369.65], [2332.08, 2273.4, 2259.25, 2333.54], [2274.81, 2326.31, 2270.1, 2328.14], [2333.61, 2347.18, 2321.6, 2351.44], [2340.44, 2324.29, 2304.27, 2352.02], [2326.42, 2318.61, 2314.59, 2333.67], [2314.68, 2310.59, 2296.58, 2320.96], [2309.16, 2286.6, 2264.83, 2333.29], [2282.17, 2263.97, 2253.25, 2286.33], [2255.77, 2270.28, 2253.31, 2276.22]] kline = Kline("K 线图示例") kline.add("日K", ["2017/7/{}".format(i + 1) for i in range(31)], v1, is_datazoom_show=True) page.add(kline) # radar schema = [("销售", 6500), ("管理", 16000), ("信息技术", 30000), ("客服", 38000), ("研发", 52000), ("市场", 25000)] v1 = [[4300, 10000, 28000, 35000, 50000, 19000]] v2 = [[5000, 14000, 28000, 31000, 42000, 21000]] radar = Radar("雷达图示例") radar.config(schema) radar.add("预算分配", v1, is_splitline=True, is_axisline_show=True) radar.add("实际开销", v2, label_color=["#4e79a7"], is_area_show=False, legend_selectedmode='single') page.add(radar) # scatter3d import random data = [[ random.randint(0, 100), random.randint(0, 100), random.randint(0, 100) ] for _ in range(80)] scatter3D = Scatter3D("3D 散点图示例", width=1200, height=600) scatter3D.add("", data, is_visualmap=True, visual_range_color=RANGE_COLOR) page.add(scatter3D) # wordcloud name = [ 'Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break' ] value = [ 10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265 ] wordcloud = WordCloud(width=1300, height=620) wordcloud.add("", name, value, word_size_range=[30, 100], rotate_step=66) page.add(wordcloud) # liquid liquid = Liquid("水球图示例") liquid.add("Liquid", [0.6]) page.add(liquid) page.render()
def CreateCharts(): page = Page() app = xw.App(visible=False, add_book=False) app.display_alerts = False app.screen_updating = False book = app.books.open(filepath) sheet = book.sheets['sheet1'] _list1 = [] _list2 = [] _list3 = [] _list4 = [] _list5 = [] # 从 excel 中获取数据 cells1 = sheet.range('F3:K3').value # 第 1 支球队 cells2 = sheet.range('F4:K4').value # 第 2 支球队 cells3 = sheet.range('F5:K5').value # 第 3 支球队 cells4 = sheet.range('F6:K6').value # 第 4 支球队 cells5 = sheet.range('F7:K7').value # 第 5 支球队 # print(data1) for cell1,cell2,cell3,cell4,cell5 in zip(cells1,cells2,cells3,cells4,cells5): _list1.append(cell1) _list2.append(cell2) _list3.append(cell3) _list4.append(cell4) _list5.append(cell5) v1 = [_list1] v2 = [_list2] v3 = [_list3] v4 = [_list4] v5 = [_list5] chart = Radar("进攻属性") schema = [ ("进球", 15), ("射门", 20), ("射正", 9), ("绝佳机会", 20), ("机会把握率", 70), ("过人", 16), # ("被侵犯", 18), # ("越位", 5), ] chart.config(schema) chart.add("利物浦", v1) chart.add("诺维奇", v2) chart.add("曼城", v3) chart.add("西汉姆联", v4) chart.add("伯恩利", v5) page.add(chart) # 玫瑰图 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v2 = [19, 21, 32, 20, 20, 33] chart = Pie("饼图-玫瑰图示例", title_pos='center') chart.add("商品A", attr, v2, is_random=True, radius=[30, 75], rosetype='area', is_legend_show=False, is_label_show=True) page.add(chart) # 雷达图 schema = [ ("销售", 6500), ("管理", 16000), ("信息技术", 30000), ("客服", 38000), ("研发", 52000), ("市场", 25000) ] v1 = [[4300, 10000, 28000, 35000, 50000, 19000]] v2 = [[5000, 14000, 28000, 31000, 42000, 21000]] v3 = [[3000, 9000, 27890, 33000, 43098, 18000]] v4 = [[3890, 12098, 29022, 32000, 41000, 20000]] chart = Radar("雷达图-默认指示器") chart.config(schema) chart.add("预算分配", v1) chart.add("实际开销", v2) chart.add("ddd", v3) chart.add("fff", v4) page.add(chart) app.kill() return page
def echart03(request): template = loader.get_template('ewpyecharts.html') # 2个系列的5个维度的数据 # value1 = [[0.79, 0.90, 0.46, 0.57, -0.50]] # value2 = [[0.11, 0.34, 0.31, -0.11, 0.21]] d1 = [[0.79, 0.90, 0.46, 0.57, -0.50]] d2 = [[1.11, 0.34, 0.31, -0.11, 0.21]] # sqldata_m = [] # query_sql = "select count(*) 数量, sum(order_m) as 金额, sum(status) 成功率, max(order_m) 最大金额, avg(order_m) 平均金额, typen from myechart_ewsales" # data_list = exc_sql(query_sql) # m=[i[0] for i in data_list] # # query_sql = "select max(f1), max(f2) from swap_radas " # data_list = exc_sql(query_sql) # m1 = data_list[0] # m2 = data_list[1] query_sql = "select name, f1, f2 from swap_radas order by f2 desc limit 0,5" data = exc_sql(query_sql) data = list(data) data = [list(i) for i in data] df = DataFrame(data, columns=["name", "f1", "f2"]) n = list(df["name"]) d1 = list(df["f1"]) d2 = list(df["f2"]) # dd1 = [float(i[1]) for i in data_list] # d1 = list(dd1) # d2 = [i[2] for i in data_list] # query_sql = "select count(*) 数量, sum(order_m) as 金额, sum(status) 成功率, max(order_m) 最大金额, avg(order_m) 平均金额, typen from myechart_ewsales where typen = '营销体系'" # data_list = exc_sql(query_sql) # d2 = [i[0] for i in data_list] # # # 用于调整雷达各维度的范围大小 # c_schema = [{"name": "", "max": 1, "min": -1}, # {"name": "", "max": 1, "min": -1}, # {"name": "", "max": 1, "min": -1}, # {"name": "", "max": 1, "min": -1}, # {"name": "", "max": 1, "min": -1}] # 用于调整雷达各维度的范围大小 c_schema = [{ "name": n[0], "max": 1, "min": -1 }, { "name": n[1], "max": 1, "min": -1 }, { "name": n[2], "max": 1, "min": -1 }, { "name": n[3], "max": 1, "min": -1 }, { "name": n[4], "max": 1, "min": -1 }] # 画图 radar = Radar() radar.config(c_schema=c_schema) radar.add("数量", [d1]) radar.add("金额", [d2]) context = dict(myechart=radar.render_embed(), host=REMOTE_HOST, script_list=radar.get_js_dependencies()) return HttpResponse(template.render(context, request))
def test_more(): page = Page() # line attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line = Line("折线图示例") line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"]) page.add(line) # pie attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图-圆环图示例", title_pos='center') pie.add("", attr, v1, radius=[40, 75], label_text_color=None, is_label_show=True, legend_orient='vertical', legend_pos='left') page.add(pie) # kline v1 = [[2320.26, 2320.26, 2287.3, 2362.94], [2300, 2291.3, 2288.26, 2308.38], [2295.35, 2346.5, 2295.35, 2345.92], [2347.22, 2358.98, 2337.35, 2363.8], [2360.75, 2382.48, 2347.89, 2383.76], [2383.43, 2385.42, 2371.23, 2391.82], [2377.41, 2419.02, 2369.57, 2421.15], [2425.92, 2428.15, 2417.58, 2440.38], [2411, 2433.13, 2403.3, 2437.42], [2432.68, 2334.48, 2427.7, 2441.73], [2430.69, 2418.53, 2394.22, 2433.89], [2416.62, 2432.4, 2414.4, 2443.03], [2441.91, 2421.56, 2418.43, 2444.8], [2420.26, 2382.91, 2373.53, 2427.07], [2383.49, 2397.18, 2370.61, 2397.94], [2378.82, 2325.95, 2309.17, 2378.82], [2322.94, 2314.16, 2308.76, 2330.88], [2320.62, 2325.82, 2315.01, 2338.78], [2313.74, 2293.34, 2289.89, 2340.71], [2297.77, 2313.22, 2292.03, 2324.63], [2322.32, 2365.59, 2308.92, 2366.16], [2364.54, 2359.51, 2330.86, 2369.65], [2332.08, 2273.4, 2259.25, 2333.54], [2274.81, 2326.31, 2270.1, 2328.14], [2333.61, 2347.18, 2321.6, 2351.44], [2340.44, 2324.29, 2304.27, 2352.02], [2326.42, 2318.61, 2314.59, 2333.67], [2314.68, 2310.59, 2296.58, 2320.96], [2309.16, 2286.6, 2264.83, 2333.29], [2282.17, 2263.97, 2253.25, 2286.33], [2255.77, 2270.28, 2253.31, 2276.22]] kline = Kline("K 线图示例") kline.add("日K", ["2017/7/{}".format(i + 1) for i in range(31)], v1) page.add(kline) # radar schema = [("销售", 6500), ("管理", 16000), ("信息技术", 30000), ("客服", 38000), ("研发", 52000), ("市场", 25000)] v1 = [[4300, 10000, 28000, 35000, 50000, 19000]] v2 = [[5000, 14000, 28000, 31000, 42000, 21000]] radar = Radar("雷达图示例") radar.config(schema) radar.add("预算分配", v1, is_splitline=True, is_axisline_show=True) radar.add("实际开销", v2, label_color=["#4e79a7"], is_area_show=False, legend_selectedmode='single') page.add(radar) page.render()
def echart1(request): template = loader.get_template('ewpyecharts.html') sql_s = "select typen, count(*) f1, sum(order_m) as f2, sum(status) f3, max(order_m) f4, avg(order_m) f5 from myechart_ewsales group by typen" columns_s = ["typen", "f1", "f2", "f3", "f4", "f5"] # index_col_s = "f1" df = pd.read_sql(sql_s, connection, columns=columns_s) df = df.sort_values(by='f1', ascending=False) # f1 数量, f2 金额, f2 成功率, f4 最大金额, F5 平均金额 # old_width = pd.get_option('display.max_colwidth') # pd.set_option('display.max_colwidth', -1) # df.to_html('files.html', escape=False, index=False, sparsify=True, border=0, index_names=False, header=False) # pd.set_option('display.max_colwidth', old_width df1 = list(df['typen']) df2 = df[['f1', 'f2', 'f3', 'f4', 'f5']] # 用于调整雷达各维度的范围大小 c_schema = [{ "name": "数量", "max": df['f1'].max(), "min": -1 }, { "name": "金额", "max": df['f2'].max(), "min": -1 }, { "name": "成功率", "max": df['f3'].max(), "min": -1 }, { "name": "最大金额", "max": df['f4'].max(), "min": -1 }, { "name": "平均金额", "max": df['f5'].max(), "min": -1 }] # # 画图 radar = Radar() radar.config(c_schema=c_schema) radar.add(df1[0], df2[0:1].values.tolist(), item_color="#f9713c", symbol=None, area_color="#ea3a2e", area_opacity=0.1, legend_top='bottom', line_width=3) radar.add(df1[1], df2[1:2].values.tolist(), item_color='#2525f5', symbol=None, area_color='#2525f5', area_opacity=0.1, legend_top='bottom', legend_text_size=20, line_width=3) radar.add(df1[2], df2[2:3].values.tolist(), item_color='#112535', line_width=3) radar.add(df1[3], df2[3:4].values.tolist(), item_color='#991125', line_width=3) radar.add(df1[4], df2[4:5].values.tolist(), item_color='#1125b9', line_width=3) radar.render("Rader.html") context = dict(myechart=radar.render_embed(), host=REMOTE_HOST, script_list=radar.get_js_dependencies()) return HttpResponse(template.render(context, request))
def echart04(request): template = loader.get_template('ewpyecharts.html') cursor = connection.cursor() query_sql = "select typen, count(*) f1, sum(order_m) as f2, sum(status) f3, max(order_m) f4, avg(order_m) f5 from myechart_ewsales group by typen" cursor.execute(query_sql) data = cursor.fetchall() # query_sql = "select name, f1, f2 from swap_radas order by f2 desc limit 0,5" # data = exc_sql(query_sql) data = list(data) data = [list(i) for i in data] # df = DataFrame(data, columns=["name", "f1", "f2"]) df = DataFrame(data, columns=["typen", "f1", "f2", "f3", "f4", "f5"]) df[["f1", "f2", "f3", "f4", "f5"]] = df[["f1", "f2", "f3", "f4", "f5"]].astype(float) df = df.sort_values(by='f1', ascending=False) # f1 数量, f2 金额, f2 成功率, f4 最大金额, F5 平均金额 df1 = df['typen'] df2 = df[['f1', 'f2', 'f3', 'f4', 'f5']] # 用于调整雷达各维度的范围大小 c_schema = [{ "name": "数量", "max": df['f1'].max(), "min": -1 }, { "name": "金额", "max": df['f2'].max(), "min": -1 }, { "name": "成功率", "max": df['f3'].max(), "min": -1 }, { "name": "最大金额", "max": df['f4'].max(), "min": -1 }, { "name": "平均金额", "max": df['f5'].max(), "min": -1 }] # # 画图 d1 = [[0.79, 0.90, 0.46, 0.57, -0.50]] # d3 = df2[:1].values.tolist() radar = Radar() radar.config(c_schema=c_schema) # radar.add(df1[1], df2[:1].values.tolist()) # radar.add(df1[2], df2[:2].values.tolist()) # radar.add(df1[3], df2[:3].values.tolist()) # radar.add(df1[4], df2[:4].values.tolist()) # radar.add(df1[5], df2[:5].values.tolist()) radar.add(df1[0:1].values, df2[0:1].values.tolist()) radar.add(df1[1:2], df2[1:2].values.tolist()) radar.add(df1[2:3], df2[2:3].values.tolist()) radar.add(df1[3:4], df2[3:4].values.tolist()) radar.add(df1[4:5], df2[4:5].values.tolist()) # radar.add("数量", [d1]) # radar.add("金额", [d2]) # radar.add("数量", [d1]) context = dict(myechart=radar.render_embed(), host=REMOTE_HOST, script_list=radar.get_js_dependencies()) return HttpResponse(template.render(context, request))
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> # Part 6 Create Radar with Pyecharts >>> from pyecharts import Radar >>> schema=[("Sales",6500),("Magagement",16000),("IT",30000),("CustomerService",38000),("R&D",52000),("Marketing",25000)] >>> v1=[[4300,10000,28000,35000,50000,19000]] >>> v2=[[5000,14000,28000,31000,42000,21000]] >>> radar=Radar() >>> radar.config(schema) <pyecharts.charts.radar.Radar object at 0x038A7930> >>> radar.add("budget",v1,is_splitline=True,is_axisline_show=True) <pyecharts.charts.radar.Radar object at 0x038A7930> >>> radar.add("spent",v2,label_color=["#4e79a7"],is_area_show=False) <pyecharts.charts.radar.Radar object at 0x038A7930> >>> radar.show_config() { "title": [ { "left": "auto", "top": "auto", "textStyle": { "fontSize": 18 }, "subtextStyle": { "fontSize": 12 } } ], "toolbox": { "show": true,
def tu_kmeans(self,v=None,n_c=4,dataname="None"): def lable_(ny,num,lable): num=0 for i in lable: for j in range(0,n_c): if i == j: ny[j]=np.vstack((ny[j],np.array(v[num]))) num=num+1 return ny #test data if v==None: v=np.random.random((190,2)) setattr=Scatter("数据平面图") #kmeans kmeans = KMeans(n_clusters=n_c, random_state=9).fit(v) y_pred=kmeans.labels_ print(kmeans.cluster_centers_[1]) setattr.add("center",kmeans.cluster_centers_[:,0],kmeans.cluster_centers_[:,1]) nn={} for i in range(0,n_c): nn[i]=np.array([0,0]) nn=lable_(nn,n_c,y_pred) arr=np.array([[1,3],[2,3],[3,2]]) bar =Bar("方差分析") td=["cul"+str(i) for i in range(0,n_c)] td.append("u") td.append("sum") for i in range(0,n_c): nn[i]=np.delete(nn[i],0,0) setattr.add("cul"+str(i),nn[i][:,0],nn[i][:,1]) def manhattan_distance(x,y): sum=0 for poin in y: sum=np.sum(abs(x-y)) return sum dis={} for i in range(0,n_c): dis[i]=manhattan_distance(kmeans.cluster_centers_[i],nn[i]) dis_list=[dis[i] for i in dis] dis_sum=reduce(lambda x,y:x+y,dis_list) print dis_sum radar=Radar("簇点误差分析.html") #dbscan dis_db=0.1 num_simple=5 dbscan=skc.DBSCAN(dis_db,num_simple).fit(v) n_clusters=len(set(dbscan.labels_))-1 clu_lab=dbscan.labels_ scatter=Scatter("噪声分析") for i in range(n_clusters): print(i) one_clu=v[clu_lab == i] scatter.add("scan"+str(i),one_clu[:,0],one_clu[:,1]) zaosheng=v[dbscan.labels_==-1] if zaosheng != []: scatter.add("噪声点",zaosheng[:,0],zaosheng[:,1]) radar.config([("clu"+str(i),reduce(max,dis_list)) for i in range(0,n_c)]) dis_list.append(dis_sum/n_c) dis_list.append(dis_sum) bar.add("",td,dis_list,is_stack=True,label_pos='inside') radar.add("bia",[dis_list],is_splitline=True, is_axisline_show=True) page=Page() page.add(setattr) page.add(bar) page.add(radar) page.add(scatter) save_helper.save_tu_helper(page,dataname)
#encoding:utf-8 # 作者:孙亚楠 # 日期:2020/3/21 0021 18:39 # 工具:PyCharm # Python版本:3.7.3 #此python文件完成功能: from pyecharts import Radar radar = Radar("雷达图", "一年的降水量与蒸发量") # //由于雷达图传入的数据得为多维数据,所以这里需要做一下处理 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 ]] radar_data2 = [[ 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3 ]] # //设置column的最大值,为了雷达图更为直观,这里的月份最大值设置有所不同 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.config(schema) radar.add("降水量", radar_data1) # //一般默认为同一种颜色,这里为了便于区分,需要设置item的颜色 radar.add("蒸发量", radar_data2, item_color="#1C86EE") radar.render('雷达图.html')
def statanalysis(): ###----------------数据准备-------------------------- #打开数据 h = pd.read_excel(path1) #找出所选择的客户数据 i = h[h['客户姓名'] == a] print(i) ####---------------------!!!!------------ i0 = i['项目名称'].value_counts() print(i0) i00 = i0.to_frame() i00['项目名称'] = i00.index i00 = i00.reset_index(drop= True) i000 = i['项目名称'].value_counts().tolist() i00['训练次数'] = i000 print(i0) print(i00) i2 = i['课程类型'].tolist()[0] page = Page(page_title=a) ##---------------radar图数据准备---------------------- #对客户数据进行分组求和 j = i.groupby(by=['项目名称'])['客户成绩'].mean() #查看j的类型 #print(type(j)) #把series转换为frame k = j.to_frame() #取出K中索引,生成新一列,去掉k中索引 k['项目名称'] = k.index k = k.reset_index(drop= True) print(k) l = i.groupby(by=['项目名称'])['客户成绩'].max() n = l.to_frame() n['项目名称'] = n.index n = n.reset_index(drop = True) ##--------------------radar图数据准备-------------------- ##-------------------------合并dataframe----------------- diantu = pd.merge(i00,k,how = 'inner') print(diantu) ##-------------------------合并dataframe----------------- ##-------------------- line数据准备----------------- Dgkhxm = i.drop_duplicates(['项目名称']) Dgkhxm_list =Dgkhxm['项目名称'].tolist() #print(Dgkhxm) #print(Dgkhxm_list) Dgkhxm_len = len(Dgkhxm_list) #print(Dgkhxm_len) i1 = i[i['项目名称'] == b] #print(i1) ##-------------------line数据准------------------------ ###----------------数据准备----------------------------------------- ##---------------------词云---------------------------------- name = [i2,a] value = [55,50] wordcloud = WordCloud('客户基本信息',width=600, height=320) wordcloud.add("", name, value,word_size_range=[20, 25],shape='diamond') page.add(wordcloud) ##------------------------词云----------------------------------- #-----------------radar图-------------------------------- schema = [] for aa in k['项目名称'].tolist(): aa = (aa,100) schema.append(aa) v_pingjun = [] v_pingjun.append(k['客户成绩'].tolist()) v_zuida =[] v_zuida.append(n['客户成绩'].tolist()) #print(schema) #print(v_pingjun) #print(v_zuida) radar = Radar('客户成绩观星评测') radar.config(schema) radar.add("平均成绩",v_pingjun,is_splitline=True, is_axisline_show=True) radar.add("最好成绩", v_zuida, label_color=["#4e79a7"], is_area_show=False) page.add(radar) #------------------radar图------------------------------------- ##------------------------EffectScatter------------------------ cishu = diantu['训练次数'].tolist() chengji = diantu['客户成绩'].tolist() es = EffectScatter("训练次数&成绩") es.add("effectScatter", cishu, chengji,xaxis_name = '训练次数',yaxis_name = '客户成绩') page.add(es) ##------------------------EffectScatter------------------------ ##---------------------line-------------------------------- attr = i1['课程时间'].tolist() v_zoushi = i1['客户成绩'].tolist() line = Line(b) line.add(b, attr, v_zoushi, mark_line=["max", "average"]) page.add(line) page.render('简单统计分析结果报告.html')
def test_more(): page = Page() # line line = Line("折线图示例") line.add( "最高气温", WEEK, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], ) line.add( "最低气温", WEEK, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], ) # pie v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图-圆环图示例", title_pos="center") pie.add( "", CLOTHES, v1, radius=[40, 75], label_text_color=None, is_label_show=True, legend_orient="vertical", legend_pos="left", ) page.add([line, pie]) # kline v1 = [ [2320.26, 2320.26, 2287.3, 2362.94], [2300, 2291.3, 2288.26, 2308.38], [2295.35, 2346.5, 2295.35, 2345.92], [2347.22, 2358.98, 2337.35, 2363.8], [2360.75, 2382.48, 2347.89, 2383.76], [2383.43, 2385.42, 2371.23, 2391.82], [2377.41, 2419.02, 2369.57, 2421.15], [2425.92, 2428.15, 2417.58, 2440.38], [2411, 2433.13, 2403.3, 2437.42], [2432.68, 2334.48, 2427.7, 2441.73], [2430.69, 2418.53, 2394.22, 2433.89], [2416.62, 2432.4, 2414.4, 2443.03], [2441.91, 2421.56, 2418.43, 2444.8], [2420.26, 2382.91, 2373.53, 2427.07], [2383.49, 2397.18, 2370.61, 2397.94], [2378.82, 2325.95, 2309.17, 2378.82], [2322.94, 2314.16, 2308.76, 2330.88], [2320.62, 2325.82, 2315.01, 2338.78], [2313.74, 2293.34, 2289.89, 2340.71], [2297.77, 2313.22, 2292.03, 2324.63], [2322.32, 2365.59, 2308.92, 2366.16], [2364.54, 2359.51, 2330.86, 2369.65], [2332.08, 2273.4, 2259.25, 2333.54], [2274.81, 2326.31, 2270.1, 2328.14], [2333.61, 2347.18, 2321.6, 2351.44], [2340.44, 2324.29, 2304.27, 2352.02], [2326.42, 2318.61, 2314.59, 2333.67], [2314.68, 2310.59, 2296.58, 2320.96], [2309.16, 2286.6, 2264.83, 2333.29], [2282.17, 2263.97, 2253.25, 2286.33], [2255.77, 2270.28, 2253.31, 2276.22], ] kline = Kline("K 线图示例") kline.add( "日K", ["2017/7/{}".format(i + 1) for i in range(31)], v1, is_datazoom_show=True, ) page.add(kline) # radar schema = [ ("销售", 6500), ("管理", 16000), ("信息技术", 30000), ("客服", 38000), ("研发", 52000), ("市场", 25000), ] v1 = [[4300, 10000, 28000, 35000, 50000, 19000]] v2 = [[5000, 14000, 28000, 31000, 42000, 21000]] radar = Radar("雷达图示例") radar.config(schema) radar.add("预算分配", v1, is_splitline=True, is_axisline_show=True) radar.add( "实际开销", v2, label_color=["#4e79a7"], is_area_show=False, legend_selectedmode="single", ) page.add(radar) # scatter3d import random data = [[ random.randint(0, 100), random.randint(0, 100), random.randint(0, 100), ] for _ in range(80)] scatter3D = Scatter3D("3D 散点图示例", width=1200, height=600) scatter3D.add("", data, is_visualmap=True, visual_range_color=RANGE_COLOR) page.add(scatter3D) # wordcloud name = [ "Sam S Club", "Macys", "Amy Schumer", "Jurassic World", "Charter Communications", "Chick Fil A", "Planet Fitness", "Pitch Perfect", "Express", "Home", "Johnny Depp", "Lena Dunham", "Lewis Hamilton", "KXAN", "Mary Ellen Mark", "Farrah Abraham", "Rita Ora", "Serena Williams", "NCAA baseball tournament", "Point Break", ] value = [ 10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265, ] wordcloud = WordCloud(width=1300, height=620) wordcloud.add("", name, value, word_size_range=[30, 100], rotate_step=66) page.add(wordcloud) # liquid liquid = Liquid("水球图示例") liquid.add("Liquid", [0.6]) page.add(liquid) assert len(page) == 7 assert isinstance(page[0], Line) assert (("echarts" in page.js_dependencies) or ("echarts.min" in page.js_dependencies)) page.render()
def draw_age_radar(data): radar = Radar("妹子年龄分布雷达图") radar.config(age_interval) radar.add("年龄段", data, is_area_show=False, legend_selectedmode='single') radar.render()
# encoding: utf-8 # author zww from pyecharts import Radar from Include.commons.common import Common if __name__ == '__main__': common = Common() results = common.queryData("select * from squad") #获取四排战绩 # 初始化雷达图 schema = [("KD", 1.6), ("吃鸡率", 6), ("Top10", 45), ("场均伤害", 220), ("最多击杀", 9), ("爆头率", 35)] radar = Radar(width=1300, height=620) radar.config(schema) # 设置样例颜色 range_color = [ '#313695', '#a50026', '#74add1', '#fdae61', '#e0f3f8', '#ffffbf', '#fee090', '#f46d43' ] index = 0 for result in results: data = [[ str(result[3]), str(result[4]), str(result[5]), str(result[6]), str(result[8]), str(result[9]) ]] radar.add(result[2], data, item_color=range_color[index])
"min": 0 }, { "name": "电池容量(mAh)", "max": 5000, "min": 0 }, { "name": "重量(g)", "max": 5000, "min": 0 }, { "name": "价格", "max": 20000, "min": 0 }] radar = Radar() radar.config(c_schema=indicator) radar.add("HuaWei mate 40 pro", value_mate40, item_color="#f9713c", symbol=None, area_color="#ea3a2e", area_opacity=0.3, legend_top='bottom', line_width=3) radar.add("Apple iphone 12 pro", value_iphone, item_color='#2525f5', symbol=None,
def test_radar(): # radar_0 schema = [("销售", 6500), ("管理", 16000), ("信息技术", 30000), ("客服", 38000), ("研发", 52000), ("市场", 25000)] v1 = [[4300, 10000, 28000, 35000, 50000, 19000]] v2 = [[5000, 14000, 28000, 31000, 42000, 21000]] radar = Radar("雷达图示例") radar.config(schema) radar.add("预算分配", v1, is_splitline=True, is_axisline_show=True) radar.add("实际开销", v2, label_color=["#4e79a7"], is_area_show=False, legend_selectedmode='single') radar.render() # radar_1 value_bj = [[55, 9, 56, 0.46, 18, 6, 1], [25, 11, 21, 0.65, 34, 9, 2], [56, 7, 63, 0.3, 14, 5, 3], [33, 7, 29, 0.33, 16, 6, 4], [42, 24, 44, 0.76, 40, 16, 5], [82, 58, 90, 1.77, 68, 33, 6], [74, 49, 77, 1.46, 48, 27, 7], [78, 55, 80, 1.29, 59, 29, 8], [267, 216, 280, 4.8, 108, 64, 9], [185, 127, 216, 2.52, 61, 27, 10], [39, 19, 38, 0.57, 31, 15, 11], [41, 11, 40, 0.43, 21, 7, 12], [64, 38, 74, 1.04, 46, 22, 13], [108, 79, 120, 1.7, 75, 41, 14], [108, 63, 116, 1.48, 44, 26, 15], [33, 6, 29, 0.34, 13, 5, 16], [94, 66, 110, 1.54, 62, 31, 17], [186, 142, 192, 3.88, 93, 79, 18], [57, 31, 54, 0.96, 32, 14, 19], [22, 8, 17, 0.48, 23, 10, 20], [39, 15, 36, 0.61, 29, 13, 21], [94, 69, 114, 2.08, 73, 39, 22], [99, 73, 110, 2.43, 76, 48, 23], [31, 12, 30, 0.5, 32, 16, 24], [42, 27, 43, 1, 53, 22, 25], [154, 117, 157, 3.05, 92, 58, 26], [234, 185, 230, 4.09, 123, 69, 27], [160, 120, 186, 2.77, 91, 50, 28], [134, 96, 165, 2.76, 83, 41, 29], [52, 24, 60, 1.03, 50, 21, 30], [46, 5, 49, 0.28, 10, 6, 31]] value_sh = [[91, 45, 125, 0.82, 34, 23, 1], [65, 27, 78, 0.86, 45, 29, 2], [83, 60, 84, 1.09, 73, 27, 3], [109, 81, 121, 1.28, 68, 51, 4], [106, 77, 114, 1.07, 55, 51, 5], [109, 81, 121, 1.28, 68, 51, 6], [106, 77, 114, 1.07, 55, 51, 7], [89, 65, 78, 0.86, 51, 26, 8], [53, 33, 47, 0.64, 50, 17, 9], [80, 55, 80, 1.01, 75, 24, 10], [117, 81, 124, 1.03, 45, 24, 11], [99, 71, 142, 1.1, 62, 42, 12], [95, 69, 130, 1.28, 74, 50, 13], [116, 87, 131, 1.47, 84, 40, 14], [108, 80, 121, 1.3, 85, 37, 15], [134, 83, 167, 1.16, 57, 43, 16], [79, 43, 107, 1.05, 59, 37, 17], [71, 46, 89, 0.86, 64, 25, 18], [97, 71, 113, 1.17, 88, 31, 19], [84, 57, 91, 0.85, 55, 31, 20], [87, 63, 101, 0.9, 56, 41, 21], [104, 77, 119, 1.09, 73, 48, 22], [87, 62, 100, 1, 72, 28, 23], [168, 128, 172, 1.49, 97, 56, 24], [65, 45, 51, 0.74, 39, 17, 25], [39, 24, 38, 0.61, 47, 17, 26], [39, 24, 39, 0.59, 50, 19, 27], [93, 68, 96, 1.05, 79, 29, 28], [188, 143, 197, 1.66, 99, 51, 29], [174, 131, 174, 1.55, 108, 50, 30], [187, 143, 201, 1.39, 89, 53, 31]] c_schema = [{ "name": "AQI", "max": 300, "min": 5 }, { "name": "PM2.5", "max": 250, "min": 20 }, { "name": "PM10", "max": 300, "min": 5 }, { "name": "CO", "max": 5 }, { "name": "NO2", "max": 200 }, { "name": "SO2", "max": 100 }] radar = Radar("雷达图示例") radar.config(c_schema=c_schema, shape='circle') radar.add("北京", value_bj, item_color="#f9713c", symbol=None) radar.add("上海", value_sh, item_color="#b3e4a1", symbol=None, legend_selectedmode='signle') radar.render() # radar_2 radar = Radar("雷达图示例") radar.config(c_schema=c_schema, shape='circle') radar.add("北京", value_bj, item_color="#f9713c", symbol=None) radar.add("上海", value_sh, item_color="#b3e4a1", symbol=None) radar.render()
def test_radar_user_define_schema(): value_bj = [ [55, 9, 56, 0.46, 18, 6, 1], [25, 11, 21, 0.65, 34, 9, 2], [56, 7, 63, 0.3, 14, 5, 3], [33, 7, 29, 0.33, 16, 6, 4], [42, 24, 44, 0.76, 40, 16, 5], [82, 58, 90, 1.77, 68, 33, 6], [74, 49, 77, 1.46, 48, 27, 7], [78, 55, 80, 1.29, 59, 29, 8], [267, 216, 280, 4.8, 108, 64, 9], [185, 127, 216, 2.52, 61, 27, 10], [39, 19, 38, 0.57, 31, 15, 11], [41, 11, 40, 0.43, 21, 7, 12], [64, 38, 74, 1.04, 46, 22, 13], [108, 79, 120, 1.7, 75, 41, 14], [108, 63, 116, 1.48, 44, 26, 15], [33, 6, 29, 0.34, 13, 5, 16], [94, 66, 110, 1.54, 62, 31, 17], [186, 142, 192, 3.88, 93, 79, 18], [57, 31, 54, 0.96, 32, 14, 19], [22, 8, 17, 0.48, 23, 10, 20], [39, 15, 36, 0.61, 29, 13, 21], [94, 69, 114, 2.08, 73, 39, 22], [99, 73, 110, 2.43, 76, 48, 23], [31, 12, 30, 0.5, 32, 16, 24], [42, 27, 43, 1, 53, 22, 25], [154, 117, 157, 3.05, 92, 58, 26], [234, 185, 230, 4.09, 123, 69, 27], [160, 120, 186, 2.77, 91, 50, 28], [134, 96, 165, 2.76, 83, 41, 29], [52, 24, 60, 1.03, 50, 21, 30], [46, 5, 49, 0.28, 10, 6, 31] ] value_sh = [ [91, 45, 125, 0.82, 34, 23, 1], [65, 27, 78, 0.86, 45, 29, 2], [83, 60, 84, 1.09, 73, 27, 3], [109, 81, 121, 1.28, 68, 51, 4], [106, 77, 114, 1.07, 55, 51, 5], [109, 81, 121, 1.28, 68, 51, 6], [106, 77, 114, 1.07, 55, 51, 7], [89, 65, 78, 0.86, 51, 26, 8], [53, 33, 47, 0.64, 50, 17, 9], [80, 55, 80, 1.01, 75, 24, 10], [117, 81, 124, 1.03, 45, 24, 11], [99, 71, 142, 1.1, 62, 42, 12], [95, 69, 130, 1.28, 74, 50, 13], [116, 87, 131, 1.47, 84, 40, 14], [108, 80, 121, 1.3, 85, 37, 15], [134, 83, 167, 1.16, 57, 43, 16], [79, 43, 107, 1.05, 59, 37, 17], [71, 46, 89, 0.86, 64, 25, 18], [97, 71, 113, 1.17, 88, 31, 19], [84, 57, 91, 0.85, 55, 31, 20], [87, 63, 101, 0.9, 56, 41, 21], [104, 77, 119, 1.09, 73, 48, 22], [87, 62, 100, 1, 72, 28, 23], [168, 128, 172, 1.49, 97, 56, 24], [65, 45, 51, 0.74, 39, 17, 25], [39, 24, 38, 0.61, 47, 17, 26], [39, 24, 39, 0.59, 50, 19, 27], [93, 68, 96, 1.05, 79, 29, 28], [188, 143, 197, 1.66, 99, 51, 29], [174, 131, 174, 1.55, 108, 50, 30], [187, 143, 201, 1.39, 89, 53, 31] ] c_schema = [ {"name": "AQI", "max": 300, "min": 5}, {"name": "PM2.5", "max": 250, "min": 20}, {"name": "PM10", "max": 300, "min": 5}, {"name": "CO", "max": 5}, {"name": "NO2", "max": 200}, {"name": "SO2", "max": 100} ] # legend selected mode 'single' radar = Radar("雷达图示例") radar.config(c_schema=c_schema, shape='circle') radar.add("北京", value_bj, item_color="#f9713c", symbol=None) radar.add("上海", value_sh, item_color="#b3e4a1", symbol=None, legend_selectedmode='single') assert 'single' in radar._repr_html_() assert 'multiple' not in radar._repr_html_() radar.render() # legend selected mode 'single' radar = Radar("雷达图示例") radar.config(c_schema=c_schema, shape='circle') radar.add("北京", value_bj, item_color="#f9713c", symbol=None) radar.add("上海", value_sh, item_color="#b3e4a1", symbol=None) assert 'multiple' in radar._repr_html_() assert 'single' not in radar._repr_html_() radar.render()
def mysqldataShow(): conn = MySQLdb.Connect(host='127.0.0.1', port=3306, user='******', passwd='', db='bishe', charset='utf8') cursor1 = conn.cursor() #通过计算得分以后的分数进行查询并且排序 sql_select = "select(@i:=@i+1)as rank,UserName , readnumsum,likenumsum,readnumavg,readnummax,bangindex " \ "from newdata1 a,(select@i:=0)b order by Bangindex desc;" cursor1.execute(sql_select) print '选取的总数为:', cursor1.rowcount #获取返回数据总条数 UserName = [] ReadNumSum = [] LikeNumSum = [] ReadNumMax=[] ReadNumAvg=[] BangIndex=[] for i in range(cursor1.rowcount): rs = cursor1.fetchone() UserName.append(rs[1]) ReadNumSum.append(rs[2]) LikeNumSum.append(rs[3]) ReadNumAvg.append(rs[4]) ReadNumMax.append(rs[5]) BangIndex.append(rs[6]) print UserName # 生成柱状图,包括得分 bar1=Bar("公众号排名",width=1500,height=720,page_title='rank',background_color='#F5F5F5') bar1.add("综合排名", UserName, BangIndex,is_datazoom_show=True,datazoom_type='both',is_toolbox_show=True) bar1.show_config() bar1.render(r"C:\Users\lss\Desktop\rank.html") # 生成柱状图,包括阅读最高数,阅读平均数,总阅读数,点赞数 bar2 = Bar("公众号详细分析", width=1500, height=720,page_title='analysis',background_color='#F5F5F5') bar2.add("阅读最高数", UserName, ReadNumMax, is_convert=True, mark_line=["average"], mark_point=["max", "min"], is_toolbox_show=True) bar2.add("阅读平均数", UserName, ReadNumAvg, is_datazoom_show=True, datazoom_type='both', datazoom_range=[10, 25], is_toolbox_show=True, mark_line=["average"], mark_point=["max", "min"]) bar2.add("文章点赞数", UserName, LikeNumSum, mark_line=["average"], mark_point=["max", "min"], is_toolbox_show=True) bar2.add("文章阅读总数", UserName, ReadNumSum, mark_line=["average"], mark_point=["max", "min"], is_toolbox_show=True) bar2.show_config() bar2.render(r"C:\Users\lss\Desktop\fenxi.html") # 生成云图 wordcloud = WordCloud(width=1500,height=720,page_title='cloud',background_color='#F5F5F5') wordcloud.add("公众号",UserName,BangIndex,word_gap=30,word_size_range=[9,100],shape="circle") wordcloud.render(r"C:\Users\lss\Desktop\cloud.html") # 对最近一个月排名前10的微信公众号进行排名趋势分析 sql_Tenselect = "select newdata1.username,newdata1.rank as a,newdata2.rank as b," \ "newdata3.rank as c,newdata4.rank as d,newdata5.rank as e " \ "from newdata1,newdata2,newdata3, newdata4,newdata5 " \ "where newdata1.username=newdata2.username " \ "and newdata2.username=newdata3.username " \ "and newdata3.username=newdata4.username " \ "and newdata4.username=newdata5.username " \ "and newdata5.rank in (1,2,3,4,5,6,7,8,9,10)" cursor2 = conn.cursor() cursor2.execute(sql_Tenselect) riqi = ["五月前","四月前","三月前","两月前","一月前"] line = Line('公众号排名趋势',width=1500,height=720,page_title='line',background_color='#F5F5F5') for i in range(cursor2.rowcount): rs2 = cursor2.fetchone() rank = [rs2[1],rs2[2],rs2[3],rs2[4],rs2[5]] line.add(rs2[0],riqi,rank,is_smooth=True,is_label_show=True,is_xaxis_boundarygap=True,mark_line=['max','min'],is_yaxis_inverse=True,xaxis_name='时间',yaxis_name='名次',xaxis_name_gap='end') line.render(r"C:\Users\lss\Desktop\everyone.html") # 通过雷达图对某个公众号分析 sql_oneselect = "select username, readnumsum,likenumsum,readnumavg,readnummax from newdata5 where newdata5.rank<10" cursor3 = conn.cursor() cursor3.execute(sql_oneselect) rader = Radar(width=1500, height=720,page_title='leida',background_color='#F5F5F5') schema = [ ("文章阅读总数", 1000000),("文章点赞数",31000),("阅读平均数",30000),("阅读最高数",110000) ] rader.config(schema,radar_text_color='#4682B4') for i in range(cursor3.rowcount): rs3 = cursor3.fetchone() rader.add(rs3[0],[[rs3[1],rs3[2],rs3[3],rs3[4]]],area_color="#4682B4",label_emphasis_textcolor="#4682B4") rader.render(r"C:\Users\lss\Desktop\one.html") cursor2.close() cursor1.close() conn.close()