python数据科学包(七)—— matplotlib实战之绘制球员能力图和股票K线图

1.球员能力图

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

在这里插入图片描述

2. 股票K线图

import os
import pandas as pd
import matplotlib.pyplot as plt
import mpl_finance as mpf
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

# 设置总体样式
plt.style.use("ggplot")

# 数据来源
datadir = 'yahoo-data'
fname = '002001.csv'
data = pd.read_csv(os.path.join(datadir, fname), index_col='Date', parse_dates=True)

# 单独取出volume数据绘图使用
vol = data['Volume']

# 设置两个图的位置
left, width = 0.1, 0.8
rect_vol = [left, 0.1, width, 0.3]
rect_main = [left, 0.46, width, 0.5]

# 创建画布
fig = plt.figure()

# 添加两个坐标轴
ax_vol = fig.add_axes(rect_vol)
ax_main = fig.add_axes(rect_main)

# 填充volume图
ax_vol.fill_between(vol.index, vol.values, color='y')

# 设置x轴显示样式
plt.setp(ax_vol.get_xticklabels(), rotation=30, horizontalalignment='right')

# 替换timestamp to float
main_data = []
for d in data.reset_index().values:
    d[0] = d[0].timestamp()
    main_data.append((d[0], d[1], d[2], d[3], d[4]))

print(main_data)
# 绘制蜡烛图
mpf.candlestick_ohlc(ax_main, main_data, width=30000, colorup='r', colordown='g')

plt.xticks([])
plt.show()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值