【python】matplotlib模块

重点研究matplotlib在量化投资中的应用

文章目录

1.安装

pip install matplotlib

2.介绍

Matplotlib的基础知识如下:

  1. Matplotlib中基本图表的元素包括x轴和y轴、水平和垂直的轴线。
    x轴和y轴使用刻度对坐标轴进行分隔,包括最小刻度和最大刻度;
  2. hold属性默认为True,允许在一副图中绘制多条曲线。
  3. 使用grid方法为图添加网格线,方法为设置grid参数(参数和plot()函数相同),lw代表linewidth(线的粗细),Alpha(表示线的明暗程度)。
  4. axis方法如果没有任何参数,返回当前坐标轴的上下限
  5. 除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴的范围
  6. 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)

【python】matplotlib模块

让我们给它添加一个标题,更改线条样式,设置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)

【python】matplotlib模块

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))

【python】matplotlib模块
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--')

【python】matplotlib模块
在一张图中显示多个子图
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=':')

【python】matplotlib模块
  1. 绘制K线图

4.1 安装tushare和mpl_finance

  • 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()

【python】matplotlib模块

Original: https://blog.csdn.net/m0_58598240/article/details/125712424
Author: mossloo
Title: 【python】matplotlib模块

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/764619/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球