本文实战演练了K线图绘制,爬取实际股票数据,并绘制K线图。
1.数据爬取
使用tushare包的无token(账户码)模式数据爬取,因为本文画K线图不涉及很细节的数据,用最简单的数据就行,至于更详细的数据,可能需要去tushare官网注册后使用token。
import tushare as ts #用于爬取股票数据
data=ts.get_k_data('000001', #以平安银行股票为例
start="2021-01-01",end="2021-09-01") #设置爬取的起止时间
data.to_excel('D:/CSDN/绘制K线图-实战演练/data1.xlsx') #把数据存到电脑Excel
2.数据整理
数据爬取之后,要依据mplfinance包的三条数据要求(数据列、日期索引、日期格式)整理好数据。(整理过程理解可参考笔者写的K线图绘制基础篇) ?
import pandas as pd #用于数据处理
Data=pd.read_excel('D:/CSDN/绘制K线图-实战演练/data1.xlsx') #读取Excel数据
Data=Data[['date','open','high','low','close','volume']] #重新编排数据的列,以适应mplfinance画图数据要求
Data.set_index('date', # 把数据中的date作为行索引,以适应mplfinance画图数据要求
inplace=True) # date索引从数据内部引用
Data.index=pd.DatetimeIndex(Data.index) #把日期索引转为时间序列格式,也是mplfinance画图数据要求
3.绘制K线图
载入需要的包matplotlib.pyplot、matplotlib、cycler来配合mplfinance绘制K线图。
import mplfinance as mpf #用于画K线图
import matplotlib.pyplot as plt #用于展示图像
import matplotlib as mpl #用于画均线
from cycler import cycler #用于设置均线颜色
kwargs=dict( #设置图像整体框架
type='candle', #选择画K线图
mav=(7,30,60), #选择均线类型为三种日线
volume=True, #设置显示成交量图
title='PING AN BANK 2021.1-2021.8', #设置图像标题
ylabel='OHLC candles', #设置纵轴标题
ylabel_lower='volume', #设置成交量图纵轴标题
figratio=(20,15), #设置图像纵横比
figscale=5) #设置图像尺寸
mc = mpf.make_marketcolors( #设置图像整体颜色
up='red', #设置涨的颜色为红色
down='green', #设置跌的颜色为绿色
edge='i', #蜡烛边缘颜色继承up和down的颜色
wick='i', #蜡烛芯颜色继承up和down的颜色
volume='in', #成交量图颜色继承up和down的颜色
inherit=True) #确定继承
s=mpf.make_mpf_style( #设置网格线风格
gridaxis='both', #设置网格线位置
gridstyle='--', #设置网格线类型
y_on_right=False, #设置y轴位置在左
marketcolors=mc) #使用上面mc设置的颜色
mpl.rcParams['axes.prop_cycle']=cycler( #设置均线颜色
color=['dodgerblue','deeppink','navy','teal','maroon','darkorange','indigo']) #配色可以查配色板,搜一下就有了
mpf.plot(Data, #使用已经爬取并整理好的数据
**kwargs, #使用上面设置的图像整体框架
style=s, #使用上面设置的网格线风格
show_nontrading=False) #不显示非交易日
plt.show() #展示图像
?完整代码:
import tushare as ts #用于爬取股票数据
data=ts.get_k_data('000001', #以平安银行股票为例
start="2021-01-01",end="2021-09-01") #设置爬取的起止时间
data.to_excel('D:/CSDN/绘制K线图-实战演练/data1.xlsx') #把数据存到电脑Excel
import pandas as pd #用于数据处理
Data=pd.read_excel('D:/CSDN/绘制K线图-实战演练/data1.xlsx') #读取Excel数据
Data=Data[['date','open','high','low','close','volume']] #重新编排数据的列,以适应mplfinance画图数据要求
Data.set_index('date', # 把数据中的date作为行索引,以适应mplfinance画图数据要求
inplace=True) # date索引从数据内部引用
Data.index=pd.DatetimeIndex(Data.index) #把日期索引转为时间序列格式,也是mplfinance画图数据要求
import mplfinance as mpf #用于画K线图
import matplotlib.pyplot as plt #用于展示图像
import matplotlib as mpl #用于画均线
from cycler import cycler #用于设置均线颜色
kwargs=dict( #设置图像整体框架
type='candle', #选择画K线图
mav=(7,30,60), #选择均线类型为三种日线
volume=True, #设置显示成交量图
title='PING AN BANK 2021.1-2021.8', #设置图像标题
ylabel='OHLC candles', #设置纵轴标题
ylabel_lower='volume', #设置成交量图纵轴标题
figratio=(20,15), #设置图像纵横比
figscale=5) #设置图像尺寸
mc = mpf.make_marketcolors( #设置图像整体颜色
up='red', #设置涨的颜色为红色
down='green', #设置跌的颜色为绿色
edge='i', #蜡烛边缘颜色继承up和down的颜色
wick='i', #蜡烛芯颜色继承up和down的颜色
volume='in', #成交量图颜色继承up和down的颜色
inherit=True) #确定继承
s=mpf.make_mpf_style( #设置网格线风格
gridaxis='both', #设置网格线位置
gridstyle='--', #设置网格线类型
y_on_right=False, #设置y轴位置在左
marketcolors=mc) #使用上面mc设置的颜色
mpl.rcParams['axes.prop_cycle']=cycler( #设置均线颜色
color=['dodgerblue','deeppink','navy','teal','maroon','darkorange','indigo']) #配色可以查配色板,搜一下就有了
mpf.plot(Data, #使用已经爬取并整理好的数据
**kwargs, #使用上面设置的图像整体框架
style=s, #使用上面设置的网格线风格
show_nontrading=False) #不显示非交易日
plt.show() #展示图像
|