python雷达图的相似度_Python可视化:matplotlib 制作雷达图进行对比分析
前言
雷达图的背景一圈一圈地像雷达,用多边形来展现数据的大小,我认为比较适合用于有多种不同维度的情形,是发现差距的一种好工具。
比如说,「得到 APP」上的学分构成包括 5 个不同维度,我根据自己的学分构成及其变化,制作了一张雷达图。
其中「持续性」与学习的天数相关,「学习量」与听课或看书的数量相关,「笔记」与笔记的数量和互动相关,「知识分享」与分享转发的次数相关,「好奇心」与搜索的次数和广度相关。
从图中可以看出,在 2020 年的年初,我在笔记方面还比较薄弱,经过努力,我做笔记的数量明显增加了。
借助雷达图,我们可以直观地看到差距,进而通过分析,更好地进行改善。
PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取
可以免费领取源码、项目实战视频、PDF文件等
02
接下来,我们看看用 matplotlib 画图的具体步骤。
首先,导入所需的库,并设置中文字体和定义颜色等。
#导入所需的库
importnumpy as npimportpandas as pdimportmatplotlib as mplimportmatplotlib.pyplot as pltimportmatplotlib.image as image#正常显示中文标签
mpl.rcParams['font.sans-serif'] = ['SimHei']#自动适应布局
mpl.rcParams.update({'figure.autolayout': True})#正常显示负号
mpl.rcParams['axes.unicode_minus'] =False#禁用科学计数法
pd.set_option('display.float_format', lambda x: '%.2f' %x)#定义颜色,主色:蓝色,辅助色:灰色,互补色:橙色
c = {'蓝色':'#00589F', '深蓝色':'#003867', '浅蓝色':'#5D9BCF','灰色':'#999999', '深灰色':'#666666', '浅灰色':'#CCCCCC','橙色':'#F68F00', '深橙色':'#A05D00', '浅橙色':'#FBC171'}
其次,从 Excel 文件中读取数据,并定义画图用的数据。
#数据源路径
filepath='./data/林骥的学分构成.xlsx'
#读取 Excel文件
df =pd.read_excel(filepath)#提取画图所需的数据
data0 = df.iloc[0, 2:].values
data1= df.iloc[1, 2:].values#提取标签
label = np.array(df.iloc[1, 2:].index)#根据分数添加评级的标签
for i, d inenumerate(data1):if d > 4:
grade= 'A^+'
elif d == 4:
grade= 'A'
elif d > 3:
grade= 'B^+'
elif d == 3:
grade= 'B'
else:
grade= 'B^-'label[i]+= '\n' + r'$\bf{' + grade + '}$'
#data 有几个数据,就把整圆 360° 分成几份
angle = np.linspace(0, 2*np.pi, len(data0), endpoint=False)#增加第一个 angle 到所有 angle 里,以实现闭合
angles =np.concatenate((angle, [angle[0]]))#倒转顺序,以让雷达图顺时针显示
angles = angles[::-1]#增加第一个 data 到所有的 data 里,以实现闭合
data0 =np.concatenate((data0, [data0[0]]))
data1= np.concatenate((data1, [data1[0]]))
接下来,开始用「面向对象」的方法进行画图。
#使用「面向对象」的方法画图,定义图片的大小
fig, ax=plt.subplots(figsize=(8, 8), subplot_kw=dict(polar=True))#设置背景颜色
fig.set_facecolor('w')
ax.set_facecolor('w')#设置标题
ax.set_title('\n林骥的学分构成及其变化\n\n', fontsize=26, loc='left', color=c['深灰色'])#设置网格标签
ax.set_thetagrids(angles*180/np.pi, labels=label)#画雷达图,用顺时针显示
ax.plot(angles, data0, 'o-', label=df.iloc[0, 0].strftime('%Y-%m-%d'))
ax.plot(angles, data1,'o-', label=df.iloc[1, 0].strftime('%Y-%m-%d'))#设置极坐标 0° 的位置
ax.set_theta_zero_location('N')#设置显示的极径范围
ax.set_rlim(0, 5)#填充颜色
ax.fill(angles, data0, facecolor=c['浅蓝色'], alpha=0.6)
ax.fill(angles, data1, facecolor=c['浅橙色'], alpha=0.6)#设置极径标签,放在第一象限的中间位置
ax.set_rlabel_position(360-360/len(data0)/2)#设置图例显示的位置
l = ax.legend(ncol=2, loc='lower center', frameon=False, borderaxespad=-3, fontsize=13)for text inl.get_texts():
text.set_color(c['深灰色'])#text.set_size(13)
#去掉最外围的黑圈
ax.spines['polar'].set_visible(False)#设置坐标标签字体大小和颜色
ax.tick_params(labelsize=16, colors=c['深灰色'])
plt.show()
03
雷达在展现多个维度的得分或性能方面,效果不错,在财务分析和标杆管理中有着广泛的应用。
另外,在一些游戏中,也有用雷达图来展现人物的能力。
但是,雷达图也有一些自身的缺点,包括:
(1)如果在一个雷达图中展现超过 2 组数据,会让图表难以阅读。
(2)变量的个数不宜过多,否则密密麻麻的线条可能让人抓不到重点。
(3)从表达数据的精确度来看,极坐标中的角度,不如直角坐标中的位置。
同样的数据,不同人得出的观点可能不一样,图表的选择可能也不一样,我们通常需要考虑以下几个因素:
(1)分析提炼的信息;
(2)所属数据的类型;
(3)想要表达的观点;
(4)想要强调的信息。
很多人作图有一种误区,就是喜欢运用所谓的技巧和创新,做出让人难以看懂的复杂图表,这与图表的目的背道而驰,是我们应该避免的。
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
作者:林骥
python雷达图的相似度_Python可视化:matplotlib 制作雷达图进行对比分析相关推荐
- python之matplotlib制作雷达图
python之matplotlib制作雷达图 示例代码: import numpy as np import matplotlib.pyplot as plt import matplotlibmat ...
- python使用matplotlib可视化堆积的折线图、使用stackplot函数可视化堆积的折线图、不同数据在垂直方向堆叠
python使用matplotlib可视化堆积的折线图.使用stackplot函数可视化堆积的折线图.不同数据在垂直方向堆叠 目录
- Python利用matplotlib制作雷达扫描显示仪(之后可结合串口和超声波传感器使用,亦可以做为仪表盘使用)
Python利用matplotlib制作雷达扫描显示仪(之后可结合串口和超声波传感器使用,亦可以做为仪表盘使用).内有制作雷达扫描GIF图的源代码包含. ''' matplotlib雷达扫描 ''' ...
- 如何利用可视化工具制作折线图?步骤是什么?
我们在写论文或者做一些PPT的时候,经常会需要画可视化折线图,虽然网上有很多可以制作折线图的可视化工具,但是大多都加了水印或者不够方便使用,直接用别人带水印的图显然是不行的.自己画的话又不会怎么办? ...
- python用matplotlib画雷达图_python使用matplotlib绘制雷达图
本文实例为大家分享了python使用matplotlib绘制雷达图的具体代码,供大家参考,具体内容如下 示例代码: # encoding: utf-8 import pandas as pd impo ...
- python 树状图可视化_Python可视化25|seaborn矩阵图
矩阵图即用一张图绘制多个变量之间的关系,数据挖掘中常用于初期数据探索: 本文介绍python中seaborn.pairplot(傻瓜版)和seaborn.PairGrid(更个性化版)绘制矩阵图 本文 ...
- python画矩阵图_Python可视化25_seaborn绘制矩阵图
矩阵图即用一张图绘制多个变量之间的关系,数据挖掘中常用于初期数据探索: 本文介绍python中seaborn.pairplot(傻瓜版)和seaborn.PairGrid(更个性化版)绘制矩阵图 本文 ...
- matplotlib 标签_Python可视化matplotlibamp;seborn14热图heatmap
"pythonic生物人"的第53篇分享. 热力图(heatmap)可通过颜色深浅变化,优雅的展示数据的差异:本篇详细介绍python seaborn绘制热图(手把手讲解). 本文 ...
- Python可视化 | Matplotlib绘制圆环图的两种方法!
人生苦短,快学Python!今天给大家介绍Python可视化之环形图的绘制. 环形图,也被称为圆环图.它在功能上与饼图相同,只是中间有一个空白,并且能够同时支持多个统计数据.与标准饼图相比,环形图提供 ...
- python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程
前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...
最新文章
- HBase性能优化方法总结(四):数据计算
- G代码 机器人的CNC实现
- jzoj3059-雕塑【容斥,数论】
- 配置DNS服务器的需要修改的配置文件为,dns服务器配置教程
- 深度linux_国产系统?基于Linux研发的深度Deepin系统,到底算不算真国产
- Atitit.提升电子商务安全性 在线充值功能安全方面的设计
- ubuntu 设置保护色
- ModuleNotFoundError: No module named ‘Crypto‘ 踩坑
- AI时代,运维和测试岗位如何开启第二春?
- 2017年个人看书学习计划
- ThinkPHP 缓存技术详解 使用大S方法
- unity android 不锁屏,Screen.sleepTimeout=SleepTimeOut.NeverSleep 禁止屏幕锁屏
- hdu2191 买大米 多重背包 模板题
- ftp服务器中的文档不能直接打开为啥,如何直接打开ftp里的 word 文档 win7 ftp直接打开word...
- Redis主从模式下从库过期的key仍然能够被读到的解决方案
- mac php oci,PHP:OCI安装
- 如何安全的修改win11用户名(微软账号登录,用户名会变成纯数字,好丑)
- 《见识》读书笔记思维导图精华版赏析!
- 刷脸支付人脸识别技术是一把双刃剑
- 老板,缺人吗?这里有一大波产品人才想安利给你~
热门文章
- 外卖cps项目的玩法淘宝客经验分享
- 对接app 微信登录,QQ登录流程(php)
- c语言数组输入空格回车问题
- Python爬虫进阶教程:抖音APP无水印视频批量下载
- 关于校园粮食浪费问题的调查
- XCTF-攻防世界-密码学crypto-新手练习区-writeup
- 2020秋 英文科技论文写作与学术报告-期末
- html暴风粒子代码,魔兽世界课物品代码及gm指令大全(全部整理自网上).doc
- ae软件安装计算机丢失,Win10系统AE软件安装失败怎么办
- mysql及格率公式_关于mysql进行名次的排名和计算及格率的分享