成为华尔街金融巨鳄第四课: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()
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传