美文网首页呆鸟的Python数据分析
python怎么画雷达图?Matplotlib数据可视化008:

python怎么画雷达图?Matplotlib数据可视化008:

作者: Yang_6234 | 来源:发表于2020-04-14 07:56 被阅读0次

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

    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(或°)

    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()

    常用参数介绍

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

    极坐标正方向

    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()

    效果图如下:

    原文链接:

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

    相关文章

      网友评论

        本文标题:python怎么画雷达图?Matplotlib数据可视化008:

        本文链接:https://www.haomeiwen.com/subject/qfiamhtx.html