用多个指标评判一个对象,你需要一张matplotlib雷达图/极坐标图

图片发自简书App

文章链接:

https://mp.weixin.qq.com/s/Fm_W7QOfHXG6GsAIO8V69Q


有一种图他可以根据指定指标评价体系,给予评价并直观反映出来,如:

1、从企业收益性、生产性、流动性、安全性和成长性这几个方面评判经营状况;

2、根据9型人格每个维度打分,你属于什么类型;

3、王者荣耀中英雄“杀、死、助、团战率、推塔数、经济比”等评分的直观体现等等。

对的,他就是我们今天要介绍给大家的雷达图,英文名

Radar Chart,乳名蜘蛛网图,学名星图,别名戴布拉图,他的坐标轴很特别——平行坐标,轴径向排列~O(∩_∩)O哈哈~

目  录

极坐标介绍

Matplotlib绘制极坐标图

常用参数介绍

代码实现



极坐标介绍

极坐标

1、极点:在平面内取一个定点O;

2、极轴:引一条射线Ox

3、极径:选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度(有时也用r表示),θ表示从Ox到OM的角度,ρ叫做点M的极径

4、极角:θ叫做点M的极角,

5、极坐标:有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系。

通常情况下,M的极径坐标单位为1(长度单位),极角坐标单位为rad(或°)

图片发自简书App



Matplotlib绘制极坐标图

创建极坐标图

matplotlib的pyplot子库提供了绘制极坐标图的方法,在调用subplot()创建子图时通过设置projection='polar',便可创建一个极坐标子图,然后调用plot()在极坐标子图中绘图。

下面创建一个极坐标子图和一个直角坐标子图进行对比:

import numpy as np

from matplotlib import pyplot as plt

fig=plt.figure(figsize=(10,5))

ax1 = plt.subplot(121, projection='polar')  #极坐标轴

ax2 = plt.subplot(122)

fig.subplots_adjust(wspace=0.4) #设置子图间的间距,为子图宽度的40%

theta=np.arange(0,2*np.pi,0.02)

ax1.plot(theta,theta/6,'-.',lw=2)

ax2.plot(theta,theta/6,'-.',lw=2)

plt.show()

图片发自简书App



常用参数介绍

绘制雷达图,并没有直接的函数,而是用一下坐标轴的参数予以定义。

极坐标正方向

set_theta_direction:方法用于设置极坐标的正方向

set_theta_direction的参数值为1,'counterclockwise'或者是'anticlockwise'的时候,正方向为逆时针;

set_theta_direction的参数值为-1或者是'clockwise'的时候,正方向为顺时针;

极坐标0°位置

set_theta_zero_location方法用于设置极坐标0°位置

0°可设置在八个位置,分别为N, NW, W, SW, S, SE, E, NE

参数值为'N','NW','W','SW','S','SE','E','NE'时,0°分别对应的位置为方位N, NW, W, SW, S, SE, E, NE;

极坐标角度网格线显示

set_thetagrids方法用于设置极坐标角度网格线显示

参数为所要显示网格线的角度值列表

默认显示0°、45°、90°、135°、180°、225°、270°、315°的网格线

极坐标角度偏离

set_theta_offset方法用于设置角度偏离

参数值为弧度值数值

极坐标极径网格线显示

set_rgrids方法用于设置极径网格线显示

参数值为所要显示网格线的极径值列表,最小值不能小于等于0

极坐标极径标签位置

set_rlabel_position方法用于设置极径标签显示位置

参数为标签所要显示在的角度

极坐标极径范围

set_rlim方法用于设置显示的极径范围

参数为极径最小值,最大值

极坐标极径最大值

set_rmax方法用于设置显示的极径最大值

该方法要在绘制完图像后使用才有效

极坐标极径最小值

set_rmin方法用于设置显示的极径最小值

该方法要在绘制完图像后使用才有效

极坐标极径网格线显示范围

set_rticks方法用于设置极径网格线的显示范围

如ax.set_rticks(np.arange(0.1, 0.9, 0.2))



代码实现

import numpy as np

from matplotlib import pyplot as plt

fig=plt.figure(figsize=(10,5))

ax=fig.add_subplot(1,1,1,polar=True) #设置一个坐标轴为极坐标体系

jingke={"推进":100,"战绩(KDA)":30,"生存":90,"团战":60,"发育":60,"输出":20} #创建英雄数据

y=np.array([i for i in jingke.values()]).astype(int) #提取英雄的信息

label=np.array([j for j in jingke.keys()]) #提取键作为标签

x = np.linspace(0, 2*np.pi, len(data1), endpoint=False) #data1里有几个数据,就把整圆360°分成几份

x1 = np.concatenate((x, [x[0]])) #将x的第一个值添加到原来的x组成第一个和最后一个元素一致的新列表,以实现x闭合

y1 = np.concatenate((y, [y[0]])) #将y的第一个值添加到原来的y组成第一个和最后一个元素一致的新列表,以实现y闭合

#绘制极坐标

ax.set_thetagrids(angles*180/np.pi, label, fontproperties="Microsoft Yahei") #设置网格标签

ax.plot(x1,y1,"o-")

ax.set_theta_zero_location('E') #设置极坐标0°位置

ax.set_rlim(0,100) #设置显示的极径范围

ax.fill(x1,y1,facecolor='b', alpha=0.2) #填充颜色

ax.set_rlabel_position(15)

ax.set_title("荆轲",fontproperties="SimHei",fontsize=16) #设置标题

plt.show()

效果图如下:

图片发自简书App

更多精彩内容,就在官方微信公众号

https://mp.weixin.qq.com/s/Fm_W7QOfHXG6GsAIO8V69Q

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • 最后一次更新日期: 2019/4/20 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝...
    jiedawang阅读 1,440评论 0 4
  • 数据读取、写入、保存 第一行导入集成工具包,如pyplot(画图)、numpy(矩阵分析)、xlrd(读取Exce...
    sssrx阅读 764评论 0 0
  • 很多机器学习的问题都会涉及到有着几千甚至数百万维的特征的训练实例。这不仅让训练过程变得非常缓慢,同时还很难找到一个...
    城市中迷途小书童阅读 3,697评论 0 2
  • 1.基本图形 散点图 plt.scatter(x,y,s=20,c='b',marker='') 折线图 plt....
    木木不彬阅读 6,835评论 0 4
  • “再不疯狂,我们就老了”。昨天一个男性朋友跟我说了这么一句话,当时我立刻就激动了,话就变多了。看见疯狂这两个字就特...
    丘比特之阿丘阅读 852评论 0 0