600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python金融大数据分析——第五章数据可视化(2)金融学图表

Python金融大数据分析——第五章数据可视化(2)金融学图表

时间:2023-06-02 20:57:10

相关推荐

Python金融大数据分析——第五章数据可视化(2)金融学图表

5.2 金融学图表

5.2.1 mplfinance

matplotlib的finance库包含不少可视化的金融图表,由于几代更新迭代,finance库也发生了变化。

从2.2.0版本前调用:

import matplotlib.finance as mpf

到2.2.0版本后调用:

pip install /matplotlib/mpl_finance/archive/master.zip

但会出现如下警告:

D:\download\python\lib\site-packages\mpl_finance.py:22: DeprecationWarning: =================================================================WARNING: `mpl_finance` is deprecated:Please use `mplfinance` instead (no hyphen, no underscore).To install: `pip install --upgrade mplfinance` For more information, see: /project/mplfinance/=================================================================category=DeprecationWarning)

再到现在的mplfinance。总的来说,新模块mplfinance使用更加便捷。

mplfinance模块简介

mplfinance是专门用于金融数据分析的可视化分析模块,在安装mplfinance之前,需要安装matplotlib库和pandas。

使用mplfinance可以很快绘制均线、剔除停盘时间段空隙,时间坐标自动完成,非常方便、人性化。

mplfinance安装

DOS下安装如下:

pip install --upgrade mplfinance

mplfinance模块用法简介

import mplfinance as mpfmpf.plot(data)

这里,data类型必须是pandas.DataFrame数据类型,必须包含’Open’, ‘High’, ‘Low’ 和 ‘Close’ 数据。

这里我们以调用雅虎近5年股票价格数据为例,更进一步描述上述内容:

import datetimeimport matplotlib.pyplot as pltimport pandas_datareader.data as webstart = datetime.datetime(, 1, 1)end = datetime.datetime(, 6, 16)# 读取数据df = web.DataReader('XOM', 'yahoo', start, end)print(df)

打印得到的股票行情如下:

High Low OpenCloseVolume Adj CloseDate -12-31 93.129997 92.059998 92.419998 92.449997 11337200.0 73.701263-01-02 93.050003 91.809998 92.250000 92.830002 10220400.0 74.004189-01-05 92.400002 89.500000 92.099998 90.290001 18502400.0 71.979301-01-06 91.410004 89.019997 90.239998 89.809998 16670700.0 71.596634-01-07 91.480003 90.000000 90.650002 90.720001 13590700.0 72.322098...... ... ... ... ... ...-06-10 53.500000 50.599998 53.500000 50.650002 31156800.0 50.650002-06-11 48.840000 46.099998 47.529999 46.180000 39183000.0 46.180000-06-12 48.619999 45.910000 48.040001 47.169998 30968800.0 47.169998-06-15 47.759998 44.750000 45.349998 47.139999 27929300.0 47.139999-06-16 49.750000 47.240002 49.570000 48.200001 26203400.0 48.200001[1374 rows x 6 columns]

import datetimeimport matplotlib.pyplot as pltimport pandas_datareader.data as webimport mplfinance as mpfstart = datetime.datetime(, 1, 1)end = datetime.datetime(, 6, 16)# 读取数据df = web.DataReader('XOM', 'yahoo', start, end)# print(df)mpf.plot(df)

由于5年的股票数据,很难看出一些细节情况,这时,我们通过查看近一个月情况来感受细节。

通过mpf.plot中修改绘图类型,可更加直观感受mplfinance的真谛。

types中默认类型为ohlc,另外还有candle,line类型。

1)ohlc类型

start = datetime.datetime(, 6, 1)end = datetime.datetime(, 6, 28)# 读取数据df = web.DataReader('XOM', 'yahoo', start, end)# 修改plot绘图类型# 通过参数types修改绘图类型,默认是ohlc,可以修改为candle,line。mpf.plot(df)

2)修改为candle类型:

mpf.plot(df, type='candle')

3)修改为line类型:

mpf.plot(df, type='line')

增加绘制均线

mav可增加均线个数,mav=10,mav=(2,5,10)

mpf.plot(df, type='candle', mav=(2, 5, 10))

mpf.plot(df, type='candle', mav=10)

添加成交量volume=True

# 添加成交量mpf.plot(df, type='candle', mav=(2, 5, 10), volume=True)

自动剔除非交易日空白

关键字参数默认show_nontrading=False

只看到停盘的时间段,show_nontrading=True

# 自动剔除非交易日空白'''关键字参数默认show_nontrading=False只看到停盘的时间段,show_nontrading=True'''mpf.plot(df, type='candle', mav=(2, 5, 10), volume=True, show_nontrading=True)

停盘的时间段就不会显示数据信息。

make_addplot概述

要分析金融数据中的Open,High,Low,Close,ma以外,还需要分析一些其他数据,需要使用make_addplot()方法。

make_addplot接受一个pandas,numpy,array以及list格式的数据(tuple不可以),和**kwargs参数。

注意:传递给make_addplot的数据参数必须要和将来画图传递给plot的数据参数行数要一致。

# make_addplot用法start = datetime.datetime(, 1, 1)end = datetime.datetime(, 6, 16)# 读取数据df = web.DataReader('XOM', 'yahoo', start, end)add_plot = mpf.make_addplot(df['Volume'])mpf.plot(df, addplot=add_plot)plt.show()

给图标添加多个数据绘制,直接将列表中传入参数即可。

# 绘制多个数据的图表,直接在列表传入至make_addplot中即可。add_plot = mpf.make_addplot(df[['Volume', 'Adj Close']])mpf.plot(df, addplot=add_plot)plt.show()

将数据分析的结果标记到图像中

数据分析和可视化的目的,是为了要分析结果,并直观的在图表上展示结果。

例如:使用marker,以及markersize和color设置标记的大小和颜色

# 将分析结果显示到图像中def data_analyze(data: pandas.DataFrame):'''简单的数据分析,并返回数据分析的结果列表,具体算法随便写写的:param data::return:'''if data.shape[0] == 0:data = datas_list = []b_list = []b = -1for i, v in data['High'].iteritems():if v > data['Open'][i] and (b == -1 or b == 1):b_list.append(data['Low'][i])b = 0else:b_list.append(numpy.nan) # 添加nan的目的是,对齐主图的k线数量if data['Close'][i] < data['Open'][i] and (b == -1 or b == 0):s_list.append(v)b = 1else:s_list.append(numpy.nan)return b_list, s_list# make_addplot用法start = datetime.datetime(, 1, 1)end = datetime.datetime(, 6, 16)# 读取数据data = web.DataReader('XOM', 'yahoo', start, end)b_list, s_list = data_analyze(data)add_plot = [mpf.make_addplot(b_list, scatter=True, markersize=200, marker='^', color='y'),mpf.make_addplot(s_list, scatter=True, markersize=200, marker='v', color='r'),mpf.make_addplot(data[['Adj Close', 'Volume']]),mpf.make_addplot(data['Close'], panel='lower', color='g', secondary_y='auto')]mpf.plot(data, type='candle', addplot=add_plot, volume=True)plt.show()

修改y轴刻度盘的位置和设置线型

# 修改主图y轴刻度盘位置和设置线形# 在绘制plot函数中使用关键字参数style='sas'# 可以把主图y左边放到右边,默认是default,设置线型是参数linestylestart = datetime.datetime(, 6, 1)end = datetime.datetime(, 6, 16)# 读取数据data = web.DataReader('XOM', 'yahoo', start, end)b_list, s_list = data_analyze(data)add_plot = [mpf.make_addplot(b_list, scatter=True, markersize=200, marker='*', color='y'),mpf.make_addplot(s_list, scatter=True, markersize=200, marker='s', color='r'),mpf.make_addplot(data[['Adj Close', 'Volume']], linestyle='dashdot'),mpf.make_addplot(data['Close'], panel='lower', color='g', secondary_y='auto'),mpf.make_addplot(data['Adj Close'], color='b', linestyle='dotted', secondary_y=True)]mpf.plot(data, type='candle', addplot=add_plot, volume=True, figscale=1.5, style='default')plt.show()

设置marketcolors和mpf_style和其他常用设置

marketcolors设置图表颜色

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。