基于Matplotlib的五边形雷达图

时间:2024-03-24 11:54:11

基于Matplotlib的五边形雷达图(Radar chart)

matplotlib库是Python中绘制二维、三维图表的数据可视化工具。它具有一下特点
1、使用简单绘图语句实现复杂绘图效果;
2、以交互式操作实现渐趋精细的图形效果;
3、使用嵌入式的LaTex输出具有印刷级别的图表、科学表达式和符号文本;
4、对图表的组成元素实现精细化控制

绘制雷达图的环境

操作系统:本图是在windows操作系统下实现的还没有成功的将代码移植到嵌入式设备上
运行的软件为:Pycharm
Python的版本为Python3.7

基于Matplotlib的五边形雷达图
matplotlib的版本为3.0.0rc1
基于Matplotlib的五边形雷达图

结果图

背景色设置为了’#87CEEB’
题目为xxxxxxx
基于Matplotlib的五边形雷达图

用到的库

‘’’
import numpy as np
import matplotlib.pyplot as plt
‘’’

具体代码

‘’’

import numpy as np
import matplotlib.pyplot as plt


def plot_radar(data):

    criterion = [1, 1, 1, 1, 1, 1] # 基准雷达图
    angles = np.linspace(0, 2 * np.pi, 5, endpoint=False)
    angles = np.concatenate((angles, [angles[0]]))
    #print(criterion)
    #print(angles)
    fig = plt.figure(facecolor='#87CEEB') # 创建画板并填充颜色
    ax = fig.add_subplot(111, polar=True,)  # 设置坐标为极坐标
    # 绘制三个五边形
    floor = 0
    ceil = 2
    labels = np.array(['x1', 'x2', 'x3', 'x4', 'x5'])
    # 绘制五边形的循环
    for i in np.arange(floor, ceil + 0.5 ,0.5):
        ax.plot(angles, [i] * (6), '-', lw= 0.5, color='black')
    for i in range(5):
        ax.plot([angles[i], angles[i]], [floor, ceil], '-',lw=0.5, color='black')
     # 绘制雷达图
    ax.plot(angles, criterion, 'b-', lw=2, alpha=0.4)
    ax.fill(angles, criterion, facecolor='b', alpha=0.3) #填充
    ax.plot(angles, data, 'b-', lw=2, alpha=0.35)
    ax.fill(angles, data, facecolor='b', alpha=0.25)

    ax.set_thetagrids(angles * 180 / np.pi, labels)
    ax.spines['polar'].set_visible(False)#不显示极坐标最外的圆形
    ax.set_theta_zero_location('N')#设置极坐标的起点(即0度)在正上方向
    ax.grid(False)# 不显示分隔线
    ax.set_yticks([]) # 不显示坐标间隔
    ax.set_title('xxxxxxxxxxxx', va='bottom', fontproperties='SimHei')
    ax.set_facecolor('#87ceeb') # 填充绘图区域的颜色
    # 保存文png图片
    plt.subplots_adjust(left=0.09, right=1, wspace=0.25, hspace=0.25, bottom=0.13, top=0.91)
    plt.savefig('a_1.png')
    plt.show()
data = [0.8, 0.9, 1.2, 1.0, 1.5, 0.8]
plot_radar(data)

‘’’