赞
踩
手里面有一份上海市所有板块的与企业相关数据如下,里面有五个关键指标,分别是常住人口,现有办公人口,企业数量,新增招聘人口,平均月薪,还有一个类别标签,总共4类,表示各个板块属于哪个大类。现在的任务是找一个展现方式能够分门别类的把各属性表现出来,于是想到了雷达图,这次用pyecharts来实现。
看了pyecharts 官方文档,其数据是下面那种格式,由逗号隔开的列表构成的大列表,可以看成一个矩阵块。pandas 读进来的数据框是空格隔开的,所以先把数据按类别分成四个数据框,给每个数据框每一行加逗号隔开再组合成大列表,即形成一个矩阵块,然后四个矩阵块又组合成一个大的列表,每个矩阵块作为绘图的数据输入添加进去。
# -*- coding: utf-8 -*- """ project_name:radar @author: 帅帅de三叔 Created on Mon Oct 21 17:28:01 2019 """ from pyecharts import options as opts #用以设置 from pyecharts.charts import Radar #导入雷达类 import pandas as pd #导入数据分析模块 radar_data=pd.read_excel("产业数据_雷达图.xlsx",sheet_name='Sheet4',index_col=u'编号') #读取数据 def get_matrix(): #定义数据转换函数 matrix=[] #由矩阵构成的数组 for classification in radar_data['类别2'].unique(): #按类别 class_=radar_data[radar_data['类别2']==classification] features=class_.iloc[:,1:-1] mat=[] for row in range(features.shape[0]): #每一类再按行循环 #print(row) value_class= ",".join(str(i) for i in features.values[row]).split(",") #series中间元用逗号隔开 value=[float(x) for x in value_class] #构造由浮点数构成的数组,一个数组就是雷达图里面一个多边形 mat.append(value) #追加到小mat里面 matrix.append(mat) #小mat追加到大的matrix里面去 #print(matrix) #查看matrix格式 return matrix def radar(): #定义绘图函数 c_schema = [ {"name": "常住人口", "max": 110, "min": -1}, {"name": "现有办公人口", "max": 110, "min": -1}, {"name": "企业数量", "max": 110, "min": -1}, {"name": "新增招聘人口", "max": 110,"min":-1}, {"name": "平均月薪", "max": 110,"min":-1},] #以字典形式设置雷达图指标名称和范围 radar=Radar() #初始化对象,单独调用 radar.add("Class=0",get_matrix()[0],color="#f9713c") #添加第一类数据并绘图 radar.add("Class=1",get_matrix()[1],color="#4169E1") #添加第二类数据并绘图 radar.add("Class=2",get_matrix()[2],color="#00BFFF") #添加第三类数据并绘图 radar.add("Class=3",get_matrix()[3],color="#3CB371") #添加第四类数据并绘图 radar.add_schema(schema=c_schema,shape="polygon") #schema设置 radar.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) #是否打标签 radar.set_global_opts(title_opts=opts.TitleOpts(title="企业指标")) #标题 return radar.render("radar.html") #渲染成html格式 if __name__=="__main__": radar()
代码定义出两个函数 **get_matrix()**和 radar() 分别用来处理数据和绘图,关键是处理数据,首先一行一行的字符串处理加逗号隔开,然后再浮点型转化成数组,每一个数组就是雷达图里面一个多边形,然后追加到mat里面去,每个mat就是矩阵块,即一个类别的数据,然后所有类别追加在一起就构成了matrix 列表,然后用切片技术作为绘图的数据输入, pyecharts例子大多是链式调用,这里采用的是单独调用。
最后渲染成html格式效果图,有一定的互动效果,可以勾选Class=0,只显示第0类雷达图,画一次就能把4类一次性画出来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。