可用的雷达图python

#HollandRadarDraw.py
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import pandas as pd

matplotlib.rcParams['font.family']="SimHei"

df = pd.read_excel('tt.xls')
k = df.shape[0]
m = df.shape[1]
# print(df.head(1))
# print('k等于',k)
# print('m等于',m)
#显示如下
#    name  chinese  math  english
# 0  alic       98    99       45
# k等于 6
# m等于 4

#搞定雷达图上显示的维度,也就是取列名
radar_labels = df.columns.values[1:m]
#print(radar_labels)#结果为['chinese' 'math' 'english'],符合要求

# data = df.iloc[0:k,1:m].values
# print(data)
#显示如下,一个元组是一个个案的数据,不是一个维度的数据,这是不符合要求的,因此要对df转置
# ['chinese' 'math' 'english']
# [[ 98  99  45]
#  [ 75  88  89]
#  [ 56 100  67]
#  [ 79  99  87]
#  [ 89  87 100]
#  [100 100  99]]
data2 = pd.DataFrame(df.values.T, index=df.columns, columns=df.index)
#print(data2)
# #显示如下
# #             0    1      2      3      4     5
# # name     alic  tom  duoli  sally  harry  tata
# # chinese    98   75     56     79     89   100
# # math       99   88    100     99     87   100
# # english    45   89     67     87    100    99
# #
# # Process finished with exit code 0
data = data2.iloc[1:m+1,0:k+1].values
#print(data)
# [[98 75 56 79 89 100]
#  [99 88 100 99 87 100]
#  [45 89 67 87 100 99]]
#
# data_labels =('艺术家','实验员','工程师','推销员','社会工作者','dhf')#6个标签,对应6个数据
data_labels_1 = df['name'].values
#print(data_labels_1)#['alic' 'tom' 'duoli' 'sally' 'harry' 'tata']
data_labels =  tuple(data_labels_1)
#print(data_labels)#('alic', 'tom', 'duoli', 'sally', 'harry', 'tata')

#数据准备完毕,开始制图
angles = np.linspace(0, 2*np.pi, m-1, endpoint=False)#数据点的显示位置
#print(angles)#[0.        2.0943951 4.1887902]
fig = plt.figure(facecolor = "white")
plt.subplot(111, polar = True)
plt.plot(angles, data,'o-',linewidth=1, alpha=0.2)
plt.fill(angles, data, alpha=0.25)
plt.thetagrids(angles*180/np.pi, radar_labels) # 设置图标上的角度划分刻度,为每个数据点处添加标签
plt.figtext(0.52, 0.95, '学习成绩分析', ha='center', size=20)#添加文本,此处是标题
legend = plt.legend(data_labels, loc = (0.94, 0.80), labelspacing = 0.1)#图例
plt.setp(legend.get_texts(), fontsize='large')#绘制阶梯图
plt.grid(True)
plt.savefig('holland_radar.jpg')
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值