人工智能5.6 -- 机器学习数据科学包(numpy、pandas、matpotlib)篇(六)matplotlib项目实践

人工智能

python,大数据,机器学习,深度学习,计算机视觉

五、机器学习数据科学包(numpy、pandas、matpotlib)篇(六)matplotlib项目实践

球员能力雷达图

思路:用极坐标画

#_*_ coding:utf-8 _*_
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot') # 为了更美观


ability_size = 6
ability_label = ['进攻', '防守', '盘带', '速度', '体力', '射术'] # 有时候不识别汉字需要加上u转义即utf-8, 写成[u'进攻', u'防守', u'盘带', u'速度', u'体力', u'射术']

ax1 = plt.subplot(221, projection='polar') # 极坐标子图
ax2 = plt.subplot(222, projection='polar')
ax3 = plt.subplot(223, projection='polar')
ax4 = plt.subplot(224, projection='polar')

player = {
    'M':np.random.randint(size=ability_size, low=60, high=99),
    'H':np.random.randint(size=ability_size, low=60, high=99),
    'P':np.random.randint(size=ability_size, low=60, high=99),
    'Q':np.random.randint(size=ability_size, low=60, high=99),
}

theta = np.linspace(0, 2*np.pi, 6, endpoint=False) # 0~2pi 均分成6份
theta = np.append(theta, theta[0]) # 闭环。尾部再增加一个首部元素

# 下面这四部分代码逻辑相同,故也可以用for循环来实现。
# 梅西
player['M'] = np.append(player['M'], player['M'][0])
ax1.plot(theta, player['M'], 'r')
ax1.fill(theta, player['M'], 'r', alpha=0.3)
ax1.set_xticks(theta)
ax1.set_xticklabels(ability_label)
ax1.set_title('梅西', color='r', size=20, position=(0.5, 0.98))
ax4.set_yticks([20, 40, 60, 80, 100])

# 哈维
player['H'] = np.append(player['H'], player['H'][0])
ax2.plot(theta, player['H'], 'g')
ax2.fill(theta, player['H'], 'g', alpha=0.3)
ax2.set_xticks(theta)
ax2.set_xticklabels(ability_label)
ax2.set_title('哈维', color='g', size=20, position=(0.5, 0.98))
ax4.set_yticks([20, 40, 60, 80, 100])

# 皮克
player['P'] = np.append(player['P'], player['P'][0])
ax3.plot(theta, player['P'], 'b')
ax3.fill(theta, player['P'], 'b', alpha=0.3)
ax3.set_xticks(theta)
ax3.set_xticklabels(ability_label)
ax3.set_title('皮克', color='b', size=20, position=(0.5, 0.98))
ax4.set_yticks([20, 40, 60, 80, 100])

# 切赫
player['Q'] = np.append(player['Q'], player['Q'][0])
ax4.plot(theta, player['Q'], 'y')
ax4.fill(theta, player['Q'], 'y', alpha=0.3)
ax4.set_xticks(theta)
ax4.set_xticklabels(ability_label)
ax4.set_title('切赫', color='y', size=20, position=(0.5, 0.98))
ax4.set_yticks([20, 40, 60, 80, 100])

plt.show()

运行结果:
在这里插入图片描述

股票K线图

下面的实例,需要先下载一个mpl_finance的包,打开cmd命令行窗口,直接输入pip install https://github.com/matplotlib/mpl_finance/archive/master.zip
说明:
在matplotlib 2.2.0版本以前,使用from matplotlib.finance import quotes_historical_yahoo_ohlc包可以获取雅虎财经网站股票数据。但自matplotlib 2.2.0版本后,matplotlib.finance从matplotlib中剥离了,所以需要单独安装一个包:mpl_finace。
然而,目前mpl_finace这个包还没有放入PIP的仓库中,所以使用直接pip install mpl_finance会提示找不到所需要的包。所以我们要到官方网站去下载:https://github.com/matplotlib/mpl_finance/archive/master.zip
详细信息,可参考我的另一篇博文:link

例:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc # 导入包:专门获取雅虎财经网站的金融数据的 https://finance.yahoo.com/
import mpl_finance as mpf
plt.style.use('ggplot') # 样式美观

date1 = (2019, 10, 1) # 起始时间
date2 = (2019, 11, 1) # 截止时间

# 获取因特尔的股价
quotes = quotes_historical_yahoo_ohlc('INTC', date1, date2) # INTC 即 intel英特尔
print(quotes)

volumns = np.array([])
dates = np.array([])

for record in quotes:
    dates = np.append(dates, record[0])
    volumns = np.append(volumns, record[5])

left, width = 0.1, 0.8
rect_vol = [left, 0.1, width, 0.3]
rect_main = [left, 0.4, width, 0.5]

fig = plt.figure()

ax_vol = fig.add_axes(rect_vol)
ax_vol.fill_between(dates, volumns, color='y')
ax_vol.xaxis_date()
plt.setp(ax_vol.get_xticklabels(), rotation=30, horizontalalignment='right') # horizontal alignment 水平放置
ax_main = fig.add_axes(rect_main)

# candlestick_ochl() : o=open开盘价,c=close收盘价,h=high最高价,l=low最低价
mpf.candlestick_ochl(ax_main, quotes, width=0.6, colorup='r', colordown='g')

ax_main.axes.get_xaxis().set_visible(False)
ax_main.set_title('Stock INTC Price and Volumn')

plt.show()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值