matplotlib(4. 繪製球員能力面板)

# -*- 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()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章