2022年 11月 3日

如何使用python画出好看的K线图

tushare ID:468684
一、安装mplfinance库

画K线蜡烛图,使用python的mplfinance库比较方便

安装:pip install mplfinance

mplfinance默认画出来的图是黑白色的,需要自己进行配置才能画出上涨为红色,下跌为绿色的蜡烛图,这是本文探讨的重点。

二、代码实现

  1. 导入相关库(tushare注册链接: https://tushare.pro/register?reg=385920)
    1. import tushare as ts
    2. import numpy as np
    3. import pandas as pd
    4. import matplotlib as mpl
    5. import matplotlib.pyplot as plt
    6. import mplfinance as mpf
  2. 获取数据
    1. data = ts.get_k_data('000858', '2020-01-01', '2022-02-25')
    2. data.set_index('date',inplace = True)
    3. data.index=pd.DatetimeIndex(data.index)
    4. data.head()

    运行结果如下:

  3. 设置参数

    1. kwargs = dict(
    2. type='candle',
    3. mav=(7, 30, 60),
    4. volume=True,
    5. title='candle_line',
    6. ylabel='OHLC Candles',
    7. ylabel_lower='Shares\nTraded Volume',
    8. figratio=(15, 10),
    9. figscale=5)
    10. # 设置基本参数
    11. # type:绘制图形的类型,有candle, renko, ohlc, line等
    12. # 此处选择candle,即K线图
    13. # mav(moving average):均线类型,此处设置7,30,60日线
    14. # volume:布尔类型,设置是否显示成交量,默认False
    15. # title:设置标题
    16. # y_label:设置纵轴主标题
    17. # y_label_lower:设置成交量图一栏的标题
    18. # figratio:设置图形纵横比
    19. # figscale:设置图形尺寸(数值越大图像质量越高)
    1. mc = mpf.make_marketcolors(
    2. up='red',
    3. down='green',
    4. edge='i',
    5. wick='i',
    6. volume='in',
    7. inherit=True)
    8. # 设置marketcolors
    9. # up:设置K线线柱颜色,up意为收盘价大于等于开盘价
    10. # down:与up相反,这样设置与国内K线颜色标准相符
    11. # edge:K线线柱边缘颜色(i代表继承自up和down的颜色),下同。详见官方文档)
    12. # wick:灯芯(上下影线)颜色
    13. # volume:成交量直方图的颜色
    14. # inherit:是否继承,选填
    1. s = mpf.make_mpf_style(
    2. gridaxis='both',
    3. gridstyle='-.',
    4. y_on_right=False,
    5. marketcolors=mc)
    6. # 设置图形风格
    7. # gridaxis:设置网格线位置
    8. # gridstyle:设置网格线线型
    9. # y_on_right:设置y轴位置是否在右
    1. mpl.rcParams['axes.prop_cycle'] = mpl.cycler(
    2. color=['dodgerblue', 'deeppink',
    3. 'navy', 'teal', 'maroon', 'darkorange',
    4. 'indigo'])
    5. # 设置均线颜色,配色表可见下图
    6. # 建议设置较深的颜色且与红色、绿色形成对比
    7. # 此处设置七条均线的颜色,也可应用默认设置
    1. # 设置线宽
    2. mpl.rcParams['lines.linewidth'] = .5
  4. 图形绘制

    1. # 图形绘制
    2. # show_nontrading:是否显示非交易日,默认False
    3. # savefig:导出图片,填写文件名及后缀
    4. mpf.plot(data['2022'],
    5. **kwargs,
    6. style=s,
    7. show_nontrading=False)
  5. 结果显示

 参考文献

[1]tushare注册官网: https://tushare.pro/register?reg=385920

[2]知乎文章:https://mbd.baidu.com/ug_share/mbox/4a81af9963/share?tk=33f502b91841d4b3cdcc0c4e0df1dcd9&share_url=https%3A%2F%2Fwjrsbu.smartapps.cn%2Fzhihu%2Fanswer%3Fid%3D1770060763%26isShared%3D1%26_swebfr%3D1%26_swebFromHost%3Dbaiduboxapp