当前位置:   article > 正文

pyecharts 画雷达图_

背景

手里面有一份上海市所有板块的与企业相关数据如下,里面有五个关键指标,分别是常住人口,现有办公人口,企业数量,新增招聘人口,平均月薪,还有一个类别标签,总共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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

代码解读

代码定义出两个函数 **get_matrix()**和 radar() 分别用来处理数据和绘图,关键是处理数据,首先一行一行的字符串处理加逗号隔开,然后再浮点型转化成数组,每一个数组就是雷达图里面一个多边形,然后追加到mat里面去,每个mat就是矩阵块,即一个类别的数据,然后所有类别追加在一起就构成了matrix 列表,然后用切片技术作为绘图的数据输入, pyecharts例子大多是链式调用,这里采用的是单独调用。

效果图

最后渲染成html格式效果图,有一定的互动效果,可以勾选Class=0,只显示第0类雷达图,画一次就能把4类一次性画出来。
在这里插入图片描述

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/196730
推荐阅读
相关标签
  

闽ICP备14008679号