pyecharts
使用pyecharts需要注意,由于numpy和pandas库数据比较大,官方并不支持,因此需要使用to_list(),进行转化,而且横坐标为日期时不支持日期格式,需要转化为str格式,K线图数据顺序需要调整为open、close、low、high,另外
kline = (
Kline()
.add_xaxis(df.date.values.tolist())
.add_yaxis("{}".format(code),data.values.tolist(),xaxis_index=0, yaxis_index=0
)
在add_yaxis()中第一个参数可以使用"",但是不可以省略,否则会出错。
mplfinance模块
由于我们要使用mplfinance.plot()函数绘制K线图,而该函数就只接收pandas.DataFrame格式的数据,所以需要将json格式文件数据转换为pandas.DataFrame格式数据
k_data=get_k15b(ncode) #取数据 list
df=pd.DataFrame(k_data,columns=['Date','Open','High','Low','Close','Volume']).set_index('Date') #list转df, t为index
设置基本参数
# type:绘制图形的类型,有candle, renko, ohlc, line等
# 此处选择candle,即K线图
# mav(moving average):均线参数,此处设置5,10,20日线
# volume:布尔类型,设置是否显示成交量,默认False
# datetime_format,设置日期显示格式
# title:设置标题
# y_label:设置纵轴主标题
# y_label_lower:设置成交量图一栏的标题
# figratio:设置图形纵横比
# figscale:设置图形尺寸(数值越大图像质量越高)
绘图参数= dict(type='candle', mav=(5, 10, 20), volume=True, datetime_format="%Y-%m-%d",title='\n股票代码 %s K线图' % (股票代码), ylabel='股票蜡烛价格', ylabel_lower='成交量', figratio=(15, 10), figscale=10)
设置marketcolors
# up:设置K线线柱颜色,up意为收盘价大于等于开盘价
# down:与up相反,这样设置与国内K线颜色标准相符
# edge:K线线柱边缘颜色(i代表继承自up和down的颜色),下同。详见官方文档)
# wick:灯芯(上下影线)颜色
# volume:成交量直方图的颜色
# inherit:是否继承,选填
mc = mpf.make_marketcolors(
up='red',
down='black',
edge='i',
wick='i',
volume='in',
inherit=True)
# 设置图形风格
# gridaxis:设置网格线位置
# gridstyle:设置网格线线型
# y_on_right:设置y轴位置是否在右
s = mpf.make_mpf_style(gridaxis='both', gridstyle='-.', y_on_right=True, marketcolors=mc)
图形绘制
# show_nontrading:是否显示非交易日,默认False
# savefig:导出图片,填写文件名及后缀
mpf.plot(df, **绘图参数,style=s, show_nontrading=False)
mpf.show()
# 自定义一个10*8的画布
fig = plt.figure(figsize=(12, 8))
# 对画布划分,显示在1行*1列的第一个子图集,其实也仅有一个子图集
ax = fig.add_subplot(1, 1, 1)
# 加载K线图
mpf.plot(df, type='candle', ax=ax, style='binance', datetime_format='%Y-%m-%d')
# 设置横轴值为时间格式
ax.xaxis_date()
# 通过tight_layout(),实现子图集铺满
plt.tight_layout()
# 显示
plt.show()
from tkinter import *
win = Tk()
win.mainloop()