重点研究matplotlib在量化投资中的应用
文章目录
1.安装
pip install matplotlib
2.介绍
Matplotlib的基础知识如下:
- Matplotlib中基本图表的元素包括x轴和y轴、水平和垂直的轴线。
x轴和y轴使用刻度对坐标轴进行分隔,包括最小刻度和最大刻度; - hold属性默认为True,允许在一副图中绘制多条曲线。
- 使用grid方法为图添加网格线,方法为设置grid参数(参数和plot()函数相同),lw代表linewidth(线的粗细),Alpha(表示线的明暗程度)。
- axis方法如果没有任何参数,返回当前坐标轴的上下限
- 除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴的范围
- legend方法如下
3.基本图表绘制
3.1 单图绘制
在同一个图中绘制cos和sin曲线,并且美化图形。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi,np.pi,256)
C,S = np.cos(x),np.sin(x)
plt.plot(x,C)
plt.plot(x,S)
让我们给它添加一个标题,更改线条样式,设置x,y轴上下限,设置曲线标记。
plt.figure(figsize=(9,7),dpi=80)
plt.subplot(1,1,1)
plt.plot(x,C,color="blue",linewidth=1.0,linestyle='-')
plt.plot(x,S,color="green",linewidth=1.0,linestyle='-')
plt.xlim(-3.0,3.0)
plt.ylim(-1.0,1.0)
plt.xticks(np.linspace(-3,3,5,endpoint=True))
plt.yticks(np.linspace(-1,1,4,endpoint=True))
plt.title("demo")
plt.savefig("demo.jpg",dpi=72)
3.2 多图绘制
如果要绘制多个图表,可以给figure()传递一个整数参数来指定figure对象的序号,如果序号所指定的对象已经存在,只需要让它成为当前的figure对象即可。
代码如下:
import numpy as np
import matplotlib.pyplot as plt
plt.figure(1)
plt.figure(2)
ax1 = plt.subplot(2,1,1)
ax2 = plt.subplot(2,1,2)
x = np.linspace(1,3,100)
for i in range(5):
plt.figure(1)
plt.plot(x,np.exp(i*x/3))
plt.sca(ax1)
plt.plot(x,np.sin(i*x))
plt.sca(ax2)
plt.plot(x,np.cos(i*x))
Matplotlib的图像都位于一个figure画布中,可以使用plt.figure创建一个新画布
fig = plt.figure(figsize=(8,6),dpi=80)
ax = {}
for i in [1,2,3]:
ax[i] = fig.add_subplot(2,2,i)
from numpy.random import randn
ax[1].hist(randn(100),bins=25,color='k',alpha=0.4);
ax[2].scatter(np.arange(50),np.arange(50)+3*randn(50))
ax[3].plot(randn(50).cumsum(),'k--')
在一张图中显示多个子图
x = np.arange(-10,10,0.1)
plt.figure(figsize=(12,6))
axes = plt.subplot(1,3,1)
axes.plot(x,np.sin(x))
axes.grid(color='r',linewidth=1,linestyle='--')
axes = plt.subplot(1,3,2)
axes.plot(x,np.cos(x))
axes.grid(color='k',linewidth=1,linestyle='-.')
axes = plt.subplot(1,3,3)
axes.plot(x,np.exp(x))
axes.grid(color='g',linewidth=1,linestyle=':')
- 绘制K线图
- Tushare 官网地址是财经数据接口包,拥有丰富的数据内容,如股票、基金、期货、数字货币等行情数据,公司财务、基金经理等基本面数据
- 提供多种数据储存方式,如Oracle、MySQL,MongoDB、HDF5、CSV等,为数据获取提供了性能保证
- SDK开发包支持语言,同时提供HTTP Restful接口,最大程度方便不同人群的使用
pip install tushare
mpl_finance是python中用来绘制蜡烛图、线图的分析工具,目前已经从Matplotlib中独立出来。
pip install mpl_finance
4.2 绘制K线图示例
import warnings
warnings.filterwarnings("ignore")
import tushare as ts
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
from matplotlib.pylab import date2num
import mpl_finance as mpf
import datetime
pro = ts.pro_api("Your Token")
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20190318')
df["trade_date"] = df["trade_date"].map(lambda date:date2num(datetime.datetime.strptime(date,'%Y%m%d')))
df1 = df[["trade_date","open","close","high","low"]]
Fig,(ax0,ax1) = plt.subplots(2,sharex=True,figsize=(15,8))
ax0 = plt.subplot2grid((3,1),(0,0),rowspan=2)
ax1 = plt.subplot2grid((3,1),(2,0))
plt.subplots_adjust(hspace=0.25)
mpf.candlestick_ochl(ax0,df1.values,width=1,colorup='r',colordown='g',alpha=1.0);
ax0.set_title('000001')
ax0.set_ylabel("Price")
ax0.grid(True)
plt.bar(df["trade_date"]-0.4,df["vol"],width=0.8);
ax1.xaxis_date()
ax1.set_ylabel("Volume")
plt.show()
Original: https://blog.csdn.net/m0_58598240/article/details/125712424
Author: mossloo
Title: 【python】matplotlib模块
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/764619/
转载文章受原作者版权保护。转载请注明原作者出处!