利用Python绘制特征雷达图

绘制特征雷达图主要有3个部分,首先是对现有数据进行清洗处理,然后对处理的数据进行计算,最后用计算的数据绘制特征雷达图。
这次我们主要的内容是绘制特征雷达图,所以数据进行清洗处理和数据进行计算就不进行说明了,主要说明用处理好的数据用python绘制特征雷达图。处理好的数据如下所示:
在这里插入图片描述
上标、下标、特征值和标准值都以确定,目前就用python来绘制特征雷达图。本次绘制特征雷达图用到的python库为matplotlib库,用pandas读入数据后,在同一个fig上绘制绘制上标、下标、特征值和标准值,最后输出结果,绘制特征雷达图的关键代码如下:

def plot_radar(newfile_dir,now_time,name):
    data = pd.read_excel(newfile_dir)
    kinds = data.iloc[:, 0]
    labels = data.iloc[:, 1:].columns
    centers = pd.concat([data.iloc[:, 1:], data.iloc[:, 1]], axis=1)
    centers = np.array(centers)
    n = len(labels)
    angles = np.linspace(0, 2 * np.pi, n, endpoint=False)
    angles = np.concatenate((angles, [angles[0]]))
    fig = plt.figure()
    ax = fig.add_subplot(111, polar=True)
    plt.rcParams['font.sans-serif'] = ['SimHei']
    floor = np.floor(centers.min()) 
    ceil = np.ceil(centers.max()) 
    for i in np.arange(floor, ceil + 0.5, 0.5):
        ax.plot(angles, [i] * (n + 1), '--', lw=0.5, color='black')
    for i in range(n):
        ax.plot([angles[i], angles[i]], [floor, ceil], '--', lw=0.5, color='black')
    ax.plot(angles, centers[0],'--' ,lw=2, label=kinds[0], color='r')
    ax.plot(angles, centers[1], '--', lw=2, label=kinds[1], color='g')
    ax.plot(angles, centers[2], lw=2, label=kinds[2], color='black')
    ax.plot(angles, centers[3], lw=2, label=kinds[3], color='b')
    font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf", size=14)
    ax.set_thetagrids(angles * 180 / np.pi, ['SO2', 'PM10', 'PM2.5', 'CO', 'NO2','SO2'], FontProperties=font) 
    plt.legend(loc='lower right', bbox_to_anchor=(1.2, 0.8)) 
    ax.set_theta_zero_location('N')
    ax.spines['polar'].set_visible(False)
    ax.grid(False) 
    plt.tight_layout()
    plt.title(now_time +':' +name,x=0,y=0.9,fontproperties=font,fontsize=18,color = 'r')
    plt.savefig("image_file" + '/' + now_time + '.png')
    plt.ylim(0, 20)
    plt.grid(True)
    matplotlib.use('Agg')

最后绘制的某县2021年1月11日时间特征雷达图如下所示,
在这里插入图片描述

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值