# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r'C:\Windows\Fonts\SIMSUN.ttc', size=12)
ability_label = [u'进攻', u'防守', u'盘带', u'速度', u'体力', u'射术']
ability_size = 6
# 随机生成球员数据
player = {
'M': np.random.randint(size=ability_size, low=10, high=99),
'N': np.random.randint(size=ability_size, low=10, high=99),
'H': np.random.randint(size=ability_size, low=10, high=99),
'Q': np.random.randint(size=ability_size, low=10, high=99)
}
# 生成角度值,各个角度一样
theta = np.linspace(0, 2 * np.pi, 6, endpoint=False)
# 追加一个值使得首尾连线
theta = np.append(theta, theta[0])
# 追加一个值使得首尾连线
player['M'] = np.append(player['M'], player['M'][0])
player['N'] = np.append(player['N'], player['N'][0])
player['H'] = np.append(player['H'], player['H'][0])
player['Q'] = np.append(player['Q'], player['Q'][0])
plt.style.use('ggplot')
ax1 = plt.subplot(221, projection='polar')
ax2 = plt.subplot(222, projection='polar')
ax3 = plt.subplot(223, projection='polar')
ax4 = plt.subplot(224, projection='polar')
# 坐标系:ax,坐标角度:theta,球员数据:player,球员名字:p_name,显示颜色:color
def set_ax(ax, theta, player, p_name, color):
ax.fill(theta, player, color, alpha=0.3)
ax.set_xticks(theta)
ax.set_xticklabels(ability_label, y=-0.05, fontproperties=font)
ax.set_title(p_name, fontproperties=font, color=color, size=20)
ax.set_yticks([])
set_ax(ax1, theta, player['M'], '球员A', 'r')
set_ax(ax2, theta, player['N'], '球员B', 'g')
set_ax(ax3, theta, player['H'], '球员C', 'b')
set_ax(ax4, theta, player['Q'], '球员D', 'y')
plt.show()
matplotlib(4. 绘制球员能力面板)
最新推荐文章于 2020-12-06 14:15:10 发布