成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['font.family'] = 'SimHei'
mpl.rcParams['axes.unicode_minus'] = False
一、入门
plt.plot([1,2,3,4],[2,3,1,7],'*-.r')
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')
plt.plot([1,2,3,7],[3,5,1,0],'o-b',label='LINE B')
plt.title("测试标题")
plt.xlabel("测试X轴")
plt.ylabel("测试Y轴")
plt.xlim(0,10)
plt.ylim(0,8)
plt.xticks(np.arange(0,10,2))
plt.yticks([0,1,3,5,7],['a','b','c','d','e'])
plt.legend()
plt.show()
三、和pandas一起搞
import pandas as pd
df = pd.read_csv('maotai.csv',index_col=0,thousands=',',parse_dates=True)[['开盘','收盘','高','低']]
df
开盘收盘高低日期2021-11-121778.001773.781785.051767.002021-11-111752.931769.601769.601741.502021-11-101790.011753.991795.001735.002021-11-091819.981790.011827.871782.002021-11-081820.001820.101830.801802.05……………2020-11-181715.001693.651720.531683.162020-11-171740.001715.801742.351701.072020-11-161711.001730.051730.051697.262020-11-131724.001705.001728.881691.002020-11-121730.011734.791750.001722.27
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**2
y3 = 3*x**3+5*x**2+2*x+1
plt.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()
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()
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.tsinghua.edu.cn/simple –upgrade mpl_finance
更新完毕后,再输入pip install –upgrade mplfinance
更新一下,把包找回来,按照下面的方式导入
import mpl_finance as fin
mpl.use('Qt5Agg')
from matplotlib.dates import date2num
df
开盘收盘高低日期2021-11-121778.001773.781785.051767.002021-11-111752.931769.601769.601741.502021-11-101790.011753.991795.001735.002021-11-091819.981790.011827.871782.002021-11-081820.001820.101830.801802.05……………2020-11-181715.001693.651720.531683.162020-11-171740.001715.801742.351701.072020-11-161711.001730.051730.051697.262020-11-131724.001705.001728.881691.002020-11-121730.011734.791750.001722.27
244 rows × 4 columns
df['time']=date2num(df.index.to_pydatetime())
df
开盘收盘高低time日期2021-11-121778.001773.781785.051767.0018943.02021-11-111752.931769.601769.601741.5018942.02021-11-101790.011753.991795.001735.0018941.02021-11-091819.981790.011827.871782.0018940.02021-11-081820.001820.101830.801802.0518939.0………………2020-11-181715.001693.651720.531683.1618584.02020-11-171740.001715.801742.351701.0718583.02020-11-161711.001730.051730.051697.2618582.02020-11-131724.001705.001728.881691.0018579.02020-11-121730.011734.791750.001722.2718578.0
244 rows × 5 columns
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
arr = df[['time','开盘','收盘','高','低']].values
fin.candlestick_ochl(ax,arr)
fig.show()
fin.candlestick_ochl(ax,arr) ax为子图,表示在该子图上作K线图,arr传入数组对象,共5组数据分别为时间、开盘数据、收盘数据、最高、最低,即对应o(open)c(close)h(high)l(low)
Original: https://blog.csdn.net/qq_49259434/article/details/121441990
Author: 这个人不主动
Title: 成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/765418/
转载文章受原作者版权保护。转载请注明原作者出处!