Python绘制雷达图

简介

目前没有发现matplotlib库有直接绘制雷达图的函数,所以自己做了一个接口,仅供参考。

主要函数

函数名 主要参数
matplotlib.pyplot.subplot polar=True
axe.set_thetagrids 纵坐标轴角度列表,纵坐标轴名称列表 

备注:

  1. axe是子图对象,一幅图是一个figure对象,一个figure对象可以有若干个axe对象(若干个子图)。

             axe对象可以通过figure对象的axes属性获取当前子图列表(figure.axes),也可以通过plt.gca()获取当前代码位置在绘制的子图。

基本步骤

  1. 创建图画对象,设置参数以使用极坐标系(pyplot.subplot(111, polar=True));
  2. 绘制图像,横坐标和极坐标最外层长度对应(配置横纵坐标列表);
  3. 通过函数设置坐标轴展示方式(axe.set_thetagrids)。

运行结果

 

示例代码

from matplotlib import pyplot as plt
import math

# 配置项目名和坐标
labels = ['a', 'b', 'asd', 'f', 'g', 'qwe']
ys = [1, 2, 4, 3, 1, 4]

def radio(labels, data, target_fn='test.png'):
    ax = plt.subplot(111, polar=True)  # 设置为极坐标系
    # 配置横坐标
    xs = [i*2*math.pi/len(data) for i in range(len(data))]
    # 在横纵坐标最后添上第一个坐标
    xs = xs+xs[:1]
    data = data+data[:1]

    print(xs, data, sep='\n')  # 打印坐标

    ax.plot(xs, data)  # 绘制
    ax.set_thetagrids([i/(len(xs)-1)*360 for i in range(len(xs)-1)], labels)  # 设置纵坐标轴,坐标轴的方向单位为角度
    
    # plt.show()  # 展示图像
    plt.savefig(target_fn)  # 如果要保存,记得注释上一行


if __name__ == '__main__':
    radio(labels, ys, )

 

要点

要点
通过设置plt.subplot函数的polar参数为True让坐标变为极坐标
通过在坐标列表最后额外加上第一个坐标让雷达图封闭
通过axe对象的set_thetagrids函数设置坐标轴,第一个参数是坐标值列表,第二个参数是坐标名列表

posted @ 2023-05-08 17:47  小鱼圆又圆  阅读(742)  评论(0)    收藏  举报