matplotlib绘制多个雷达图子图

在写机器学习算法的论文时,对模型的评价指标做一个可视化展示、想到了使用雷达图,效果还不错,以下是源代码分享

import pandas as pd
import numpy as np
eva=pd.read_excel('误差表4.xlsx')
eva.head()
x=eva['Algorithms']
mes=eva['MSE(GJ2)']
rmse=eva['RMSE(GJ3)']
mae=eva['MAE(GJ2)']
mape=eva['MAPE']

mse=np.array(mes)
rmse=np.array(rmse)
mae=np.array(mae)
mape=np.array(mape)
labels=['RFR','LightGBM','GBR','SVR','BiLSTM-TCN']
labels=np.array(labels)
labels=np.concatenate((labels,[labels[0]]))
 
mse=np.concatenate((mse,[mse[0]]))
rmse=np.concatenate((rmse,[rmse[0]]))
mae=np.concatenate((mae,[mae[0]]))
mape=np.concatenate((mape,[mape[0]]))
angles = np.linspace(0,2*np.pi,5,endpoint=False) 

angles = np.concatenate((angles,[angles[0]]))
import matplotlib.pyplot as plt
plt.rcParams['font.size']=8
plt.rcParams['font.family']='Arial'



%matplotlib inline

fig = plt.figure(facecolor="white")       #facecolor 设置框体的颜色
plt.subplot(2,2,1,polar=True) 
fig.subplots_adjust(left=0,right=1,top=1,bottom=0,wspace=0.3,hspace=0.4)
ax=plt.plot(angles,mse,'bo-',color ='#96C37D',linewidth=2,label='MSE')

plt.fill(angles,mse,facecolor='#93C37D',alpha=0.25) 
plt.title('MSE', size=12)
plt.thetagrids(angles*180/np.pi,labels,fontsize=10)          #做标签
plt.grid(True)
plt.yticks(np.arange(0.14, 0.24, 0.05), fontsize=10)  # 调整刻度字体大小  

plt.subplot(2,2,2,polar=True)    
plt.plot(angles,rmse,'bo-',color ='#FA7F6F',linewidth=2,label='RMSE')
plt.fill(angles,rmse,facecolor='#fa7f6f',alpha=0.25)
plt.title('RMSE', size=12)#填充两条线之间的色彩,alpha为透明度
plt.yticks(size=10)
plt.thetagrids(angles*180/np.pi,labels,fontsize=10)          #做标签
plt.grid(True)
plt.yticks(np.arange(0.38, 0.49, 0.1), fontsize=10) 

plt.subplot(2,2,3,polar=True)    
plt.plot(angles,mae,'bo-',color ='#F3D266',linewidth=2,label='MAE')
plt.fill(angles,mae,facecolor='#F3D266',alpha=0.25)    
plt.title('MAE', size=12)

plt.thetagrids(angles*180/np.pi,labels,fontsize=10)          #做标签
plt.grid(True)
plt.yticks(np.arange(0.25, 0.40, 0.1), fontsize=10) 

plt.subplot(2,2,4,polar=True)     
plt.plot(angles,mape,'bo-',color ='#82B0D2',linewidth=2,label='MAPE')
plt.fill(angles,mape,facecolor='#82B0D2',alpha=0.25)    #填充两条线之间的色彩,alpha为透明度
plt.title('MAPE', size=12)

plt.thetagrids(angles*180/np.pi,labels,fontsize=10)          #做标签
plt.grid(True)
plt.yticks(np.arange(0.03, 0.05, 0.015), fontsize=10) 


  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值