目录

一、概念介绍

二、数据导入

三、图像绘制

四、 参数解释

Part 1:背景图添加

Part 2:add_schema

Part 3:绘制雷达链

Part 4 :set_series_opts


一、概念介绍

雷达图(Radar Chart),或称为戴布拉图、蜘蛛网图。图形以一点为中心,每一变量维度为一极坐标轴,n个维度即形成n轴的由内向外放射状图形,形似蜘蛛网。

图形示例:(图源百度)

分析上图,我们可以得到一家企业或者某个部门在经营管理上的评分分布。

图形的基本构成如下:

雷达图的应用特点

① 同样是属于比较与分布类型,雷达图与柱状图最明显的差异是,柱状图在实际场景中通常被用于进行单(多)维度定性数据的可视化,比如一次期中考试,绘制柱状图来对比八个班级的语文平均分;而雷达图常常用于单(多)个体的多维度数据对比,进而呈现并帮助分析对象的优劣处,比如在这次考试中,绘制雷达图来观察二班的语文、数学、英语、生物、化学、物理科目平均分的优良分布。

② 如果遇到多总体,我们可以使用多幅雷达图,或者单幅雷达图中多层数据线的形式进行总体间对比。

③ 无论是变量特征还是对象总体都不要太多,前者(>10)会使得图像的轴过多,包含信息量过大而弱化了可读性,一眼看去让人感觉很复杂。后者(>5)要么会使得线条交叉密集,要么就是多重覆盖域因附着不同填充色而导致的信息覆盖问题,当然,如果每个总体都是单维突出类型,信息突出效果还是很好的。

④ 雷达图使用的数据是多特征的,会出现一种很常见的情况,比如年龄和收入的量纲或者说取值范围是不一致的。因为雷达图是维度内的粗略对比,我们并不会去根据图形计算一班和二班的数学平均分差究竟是多少,只需要得到二班在这次期中考试中数学比一班考得好的结论就可以,所以为了将各维度数据在一个取值范围内,我们在绘图前会考虑将数据归一化或者标准化。

⑤ 在应用场景上,通常有财务状况综合评价、用户画像、员工评分、医疗症状自评等等


二、数据导入

在本案例中,我们虚构了某部门五位员工的月度评价数据,希望绘制雷达图以向管理或人事部门反映员工们的亮点与不足之处。

import pandas as pd
data = pd.DataFrame(pd.read_excel('案例数据.xlsx'))# 生成绘图series
data_radar = []
for row in range(data.shape[0]):dic = {}value = []for col in range(1,data.shape[1]):value.append(int(data.iloc[row,col]))dic['name'],dic['value'] = data['员工'][row],valuedata_radar.append([dic])# 各特征维度取值范围
scope = []
for col in range(1,data.shape[1]):dic = {}dic['name'] = data.columns[col]dic['max'],dic['min'] = max(data.iloc[:,col]),0scope.append(dic)

在这里,为了突出优秀,我们数轴范围最大值来源于样本数据。如果min,max都取决于样本,绘图结果等价于使用了归一法。这个范围是可以自定义的,看你想要展现什么信息,或者作为绘图的调整。

我们需要绘制雷达图的数据结构为:

如果数据量比较少,希望自己手动输入的话,也可以按如下格式:

data_radar = [[{'name':'许一','value':[22,3,3,7,3,5]}],[{'name':'刘二','value':[27,2,4,10,4,3]}]# ...]

三、图像绘制

为了下文便于解释参数,这里我们将多数调整为显示。使用python编程语言,调用pyecharts包得到以下图形。

实现代码如下:

from pyecharts import options as opts
from pyecharts.charts import Radar
from pyecharts.commons.utils import JsCodec = (# Radar()Radar(init_opts=opts.InitOpts(bg_color={"type": "pattern", "image": JsCode("img"), "repeat": "no-repeat"})).add_js_funcs(    """    var img = new Image();img.src = '背景.jpg';    """).add_schema(schema=scope,shape="circle",center=["50%", "50%"],#宽高:900px*500pxradius="60%",angleaxis_opts=opts.AngleAxisOpts(min_=0,max_=360,is_clockwise=False,interval=10,axistick_opts=opts.AxisTickOpts(is_show=True),axislabel_opts=opts.LabelOpts(is_show=True),axisline_opts=opts.AxisLineOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True)),radiusaxis_opts=opts.RadiusAxisOpts(min_=0,max_=30,interval=5,splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),),polar_opts=opts.PolarOpts(),splitline_opt=opts.SplitLineOpts(is_show=False)).add(series_name="许一",data=data_radar[0],areastyle_opts=opts.AreaStyleOpts(opacity=0.2),linestyle_opts=opts.LineStyleOpts(width=2),color='#fc5a50').add(series_name="刘二",data=data_radar[1],areastyle_opts=opts.AreaStyleOpts(opacity=0.2),linestyle_opts=opts.LineStyleOpts(width=2),color='#35ad6b').add(series_name="张三",data=data_radar[2],areastyle_opts=opts.AreaStyleOpts(opacity=0.2),linestyle_opts=opts.LineStyleOpts(width=2),color='#3d7afd').add(series_name="李四",data=data_radar[3],areastyle_opts=opts.AreaStyleOpts(opacity=0.2),linestyle_opts=opts.LineStyleOpts(width=2),color='#aa23ff').add(series_name="王五",data=data_radar[4],areastyle_opts=opts.AreaStyleOpts(opacity=0.2),linestyle_opts=opts.LineStyleOpts(width=2),color='#fcb001').set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title = '员工评价',subtitle = '林老头ss',pos_left='left')).render("雷达图示例.html")
)

四、 参数解释

 Part 1:背景图添加

在默认情况下,我们的背景是白板,而initopts给我们提供了背景色、背景图、绘画主题等多种自定义选项。上述代码中负责背景图添加的部分如下,图片我选择的是一只可爱的小鲨鱼。

如果无需增加背景,则Radar()即可。如果需要增加背景图片,我们只需要在上述代码中更改img.src部分,因为我这里背景图是放在同级目录,所以不需要提供存储路径。

如果是想要更改背景色、主题等,可以参考地图案例的参数解释。利用pyecharts绘制分级地图的案例_林老头ss的博客-CSDN博客

Part 2:add_schema

add_schema 负责我们雷达图的设置

① schema :指定雷达图的特征标签,每个轴的最大最小取值(方便画点),此前我们已经生成了取值范围的scope【{}】型,直接赋值就行。

shape、center、radius

shape即雷达图的外轮廓形状,circle圆形为默认值。

center为中心的位置,[50%,50%]指的是画布宽50%和高50%的位置,默认画布的宽高数据是900px*500px。。

radius是雷达图外圆的半径长度,60%指的是当前画布的宽度和高度中较小者的60%。

 AngleAxisOpts :角度坐标选项设置

min_,max_ 指定角度范围。

is_clockwise=False 角度递增的方向是否按照时钟转动(顺时针)的方向。

interval 径向轴显示的间隔区间大小值,interval=10表示每隔10°划分径向轴角度。

剩下四个参数分别对应如下:

④ RadiusAxisOpts :径向轴选项设置

min_,max_ 同理,设置径向轴的取值范围。

interval 用于径向轴上的划分,interval = 5 表示每隔 5 划分径向轴长度。

SplitAreaOpts 用来设置我们的间隔区域,is_show=True才会有灰白相间的效果,opacity指的是不透明度,可以取[0,1] , 数值越大颜色越深。

⑤ PolarOpts : 极坐标的设置,我们选择默认值。

⑥ splitline_opt :如果设置为True,增加分割线,变化如下图所示(不显示雷达链,免得遮挡)

-- 注意,上面的选项点亮了才会显示对应总体的分布数据线。

Part 3:绘制雷达链

add()用于一条一条自定义绘制总体的雷达链。

 series_name :数据序列的名称,即总体名称。在静态图中它不会显示,交互过程中可以看到(如上上图)。

 data :对应总体的数据list,格式为[{'name':'XX','value':[num,num,num]}],具体参考我们的数据结构。这里需要注意的是,我们value的长度要和特征维度数一致。

areastyle_opts :覆盖域的透明度设置,因为我们这里是五总体,必须要调整填充色的透明度。

 linestyle_opts : 雷达链的线条宽度设置

color :指定不同总体雷达图的颜色,这里可以保证边界和内部填充色一致,而饱和度不同。

symbol :设置数据点的形状,默认是空心圆。如果我们以许一的雷达链举例,数据点的形状改为三角形,即在color后面增加symbol = SymbolType.TRIANGLE,得到的结果如下:

其余的形状可以参考水球图的参数解释部分:利用pyecharts绘制水球图的案例_林老头ss的博客-CSDN博客_水球图pyecharts

Part 4 :set_series_opts

这一部分用于设置数据序列的显示,我们只提LabelOpts,对数据序列数值标签的设置,默认is_show是True,多总体情况下数字标签多容易显得很混乱,影响视觉观感。

如果不想把所有雷达链绘制在一幅图中,我们也可以每一个总体画一个然后再排布,此时每个总体的所有label和color用一个颜色也会很好看。

希望对您有所帮助~

利用pyecharts绘制雷达图的案例(含参数解释)相关推荐

  1. 利用Pyecharts绘制仪表盘图的案例【含参数解释】

    目录 一.概念解释 二.数据导入 三.单指针仪表盘 四.参数解释 五.多指针仪表盘 一.概念解释         仪表盘图(Gauge),这里指的并不是人力常用的多图表在同页面聚合排布的绘图方法. 仪 ...

  2. 利用Pyecharts绘制漏斗图的案例【含参数详解】

    一.概念介绍 漏斗图(Funnel),也称为倒三角图,借助echarts的解释如下: Funnel diagram is suitable for one-way analysis of single ...

  3. 利用pyecharts绘制水球图的案例

    一.概念介绍 水球图(Liquid Fill Chart),听名字或许比较陌生,但从命名的角度也可以猜测出此类图像以球形水波显示.水球图属于填充仪表盘类,可以用于生动地展示单个百分比数据或评分数据. ...

  4. python【Matlibplot绘图库】利用matlibplot绘制雷达图

    文章目录 1.基本构造 2.比较功能 1.基本构造 之前在一些数据分析案例中看到用 Go 语言绘制的雷达图,非常的漂亮,就想着用matlibplot.pyplot也照着画一个,遗憾的是matlibpl ...

  5. python绘图:利用matlibplot绘制雷达图

    之前在一些数据分析案例中看到用 Go 语言绘制的雷达图,非常的漂亮,就想着用matlibplot.pyplot也照着画一个,遗憾的是matlibplot.pyplot模块中没有直接绘制雷达图的函数,不 ...

  6. 利用Canvas绘制雷达图

    雷达图(蜘蛛网图)是一种常见的数据分析图表,本文采用canvas来绘制雷达图,并最终封装成一个小组件.首先来看一下最终的效果图: 如何画正多边形 以正五边形雷达图为例(其他任意正多边形也一样),如下图 ...

  7. 利用pyecharts绘制分级地图的案例

    一.概念介绍 分级统计地图,或许在以前大家还不常见,但是疫情期间,借助分级地图向我们呈现全国各省市风险地区情况.确诊或死亡人数情况等的应用还是数不胜数的,效果也让人一目了然.显然,分级地图即是在我们整 ...

  8. 利用matplotlib绘制圆环图的案例

    一.概念介绍 圆环图(Donut Chart),又称为环形图,甜甜圈图.它从饼图变形而来,单环的作用上与饼图相似,用于展示定性数据中小类占大类的比例关系. Q: 那既然都有饼图了,为什么还要圆环图呢? ...

  9. 利用matplotlib绘制马赛克图的案例

    一.概念介绍 马赛克图(Mosaic plot),基于列联表的数据排布,展现二维定性变量下的取值大小,我们可以将它想象成三维柱状图的俯视,颜色差异或面积大小常被用于区分每个块的赋值大小. · 什么是列 ...

  10. 利用Joypy绘制嵴线图的案例

    一.概念介绍 嵴线图(ridgeline plot),用来展示同一维度的几个数据的分布情况,每一层嵴线(峰峦)都是一个直方图或者密度图,层层堆叠形成了最终的嵴线图. · 嵴线图一般用于多类别(> ...

最新文章

  1. npm WARN saveError ENOENT: no such file or directory, open ‘/Users/....../package.json‘的解决办法
  2. ucore-lab1-练习6report
  3. 使用jquery插件报错:TypeError:$.browser is undefined的解决方法
  4. HEC-RAS二维溃坝洪水模拟(尾矿库)
  5. Function语意学之Member的各种调用方式
  6. C#Redis 事务操作
  7. Xamarin devexpress Grid
  8. 七款非常好用的电脑数据恢复软件推荐
  9. 35岁是继续做测试,还是回家送外卖?
  10. redis过期策略有哪些?内存淘汰机制有哪些?
  11. PR曲线与ROC曲线
  12. jsp+servelt+mysql+tomcat 四六级单词查询系统
  13. 10个3d立体字ps金属字图层样式下载
  14. 超高度近视合并白内障患者如何重返年轻优视力
  15. 该怎么设置macOS 的开机启动项
  16. 组成新数python_小组组名大全
  17. 技术总结--android篇(四)--工具类总结
  18. Mac免费思维导图软件:幕布 for mac
  19. 计算机编程常用的英语,100916计算机编程常用的英语
  20. 反向代理和正向代理之间的区别

热门文章

  1. 手把手教你如何免费把多张图片合并为PDF文件,一看就懂。
  2. js 单击、双击、连续多次点击
  3. npm link详解
  4. 反向题在测试问卷信效度_科学网—调查问卷的信度、效度分析方法(转载) - 谢卫军的博文...
  5. 让Firefox支持Wap浏览器功能的插件
  6. 盘点 4 个开源小游戏
  7. geth 搭建 私有链节点
  8. 计算机睡眠和休眠哪个更好,电脑睡眠和休眠哪个好 有什么区别
  9. matlab gpa排名,GPA如何决定申请排名多少的大学?(附TOP100大学要求)
  10. 风行视频app v3.4.3.1