2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃

成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃

时间:2019-05-04 07:40:11

相关推荐

成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃

成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃

# 导包import matplotlib as mplimport matplotlib.pyplot as pltimport numpy as np

# 默认情况下,mpl不支持中文,我们需要进行一下设置mpl.rcParams['font.family'] = 'SimHei'mpl.rcParams['axes.unicode_minus'] = False

一、入门

plt.plot([1,2,3,4],[2,3,1,7],'*-.r') # 绘图函数(折线图)两个参数x,y(list或数组),第三个参数决定图像样式(自行探索)plt.show() # 显示函数

二、深入

调用show之前的所有plot的图像会在同一张图中显示出来

plt.plot([1,2,3,4],[2,3,1,7],'*-.r') plt.plot([1,2,3,4],[3,5,1,0],'o-b') plt.show() # 显示函数

常见的图像标注函数

plt.plot([1,2,3,4],[2,3,1,7],'*-.r',label='LINE A') #label设置图例plt.plot([1,2,3,7],[3,5,1,0],'o-b',label='LINE B') # 设置图像标题plt.title("测试标题")# 设置x轴plt.xlabel("测试X轴")# 设置y轴plt.ylabel("测试Y轴")# 设置x轴范围plt.xlim(0,10)# 设置y轴范围plt.ylim(0,8)# 设置x轴刻度(可传列表可传数组)plt.xticks(np.arange(0,10,2))# 设置y轴刻度(第二个参数可将对应的刻度换成指定的形式)plt.yticks([0,1,3,5,7],['a','b','c','d','e'])# 显示图例plt.legend()plt.show()

三、和pandas一起搞

import pandas as pd

# 参数parse_dates=True将所有能用时间对象表示的列统统转为时间对象df = pd.read_csv('maotai.csv',index_col=0,thousands=',',parse_dates=True)[['开盘','收盘','高','低']]df

244 rows × 4 columns

DataFrame支持直接绘图

df.plot()plt.show()

作业:

使用Matplotlib模块在一个窗口中绘制数学函数y=x,y=x2,y=x3+5x^2+2x+1的图像,使用不同颜色的线加以区别,并使用图例说明各个线代表什么函数。

我的答案

x=np.linspace(-10,10,10000)plt.plot(x,x,'-r',label="y=x")plt.plot(x,x**2,':b',label="y=x^2")plt.plot(x,3*x**3+5*x**2+2*x+1,'-.y',label="y=3x^3+5x^2+2x+1")plt.legend()plt.show()

标准答案

x = np.linspace(-1000,1000,100000)y1 = x.copy()y2 = x**2y3 = 3*x**3+5*x**2+2*x+1plt.plot(x,y1,color='red',label='y=x')plt.plot(x,y2,color='green',label='y=x^2')plt.plot(x,y3,color='blue',label='y=3*x^3+5x^2+2x+1')plt.xlim(-1000,1000)plt.ylim(-1000,1000)plt.legend()plt.show()

四、Matplotlib画布与子图

提问:如何用一个show画出两张图

# 创建画布fig = plt.figure()# 在画布上创建子图 参数221的意思:将画布分成2行2列,该子图占第1个格子ax1 = fig.add_subplot(2,2,1)ax2 = fig.add_subplot(2,2,2)# 在子图上画图ax1.plot([1,2,3,4],[4,3,2,1])plt.show()

五、柱状图与饼图

### 柱状图两个参数 第一个参数是柱子中心的位置 plt.bar([0,1,2,4],[5,6,7,8])plt.show()

#data = [62,48,56,100]labels = ['Jan','Feb','Mar','Apr']plt.bar(np.arange(len(data)),data,color='red',width=0.3)plt.xticks(np.arange(len(data)),labels)plt.show()

### 饼图 autopct填入格式化字符串,表示饼图上的数据以指定形式出现,explode表示各个板块突出相对于中心多少plt.pie([10,20,30,40],labels=['a','b','c','d'],autopct="%.2f%%",explode=[0,0.1,0,0.1])plt.show()

六、绘制K线图

matplotlib.finanace中提供了大量绘制金融相关图的函数接口

绘制K线图:matplotlib.finanace.candlestick_ochl函数

完蛋了,家人们!这个包没了!!

终端输入 pip install -i https://pypi.tuna./simple --upgrade mpl_finance

更新完毕后,再输入pip install --upgrade mplfinance

更新一下,把包找回来,按照下面的方式导入

import mpl_finance as finmpl.use('Qt5Agg')#必须显式指明matplotlib的后端from matplotlib.dates import date2num

df

244 rows × 4 columns

# data2num将pythondatetime对象转换成数组df['time']=date2num(df.index.to_pydatetime())df

244 rows × 5 columns

fig = plt.figure()ax = fig.add_subplot(1,1,1)# np.asarray(df)arr = df[['time','开盘','收盘','高','低']].valuesfin.candlestick_ochl(ax,arr)fig.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

fin.candlestick_ochl(ax,arr) ax为子图,表示在该子图上作K线图,arr传入数组对象,共5组数据分别为时间、开盘数据、收盘数据、最高、最低,即对应o(open)c(close)h(high)l(low)

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