Python mplfinance库④ 如何自定义style样式

简介: Python mplfinance库④ 如何自定义style样式

使用mplfinance的时候,我们通过设定参数style,可以得到多种多样的图像风格。style参数常用的内置样式有:‘binance’, ‘blueskies’, ‘brasil’, ‘charles’, ‘checkers’, ‘classic’, ‘default’, ‘mike’, ‘nightclouds’, ‘sas’, ‘starsandstripes’, ‘yahoo’。
这些内置样式中,很多都是按照美股的习惯红色表示下跌,韭菜色(绿色)表示上涨。这与我们A股的显示习惯刚好是相反的。
当这些样式满足不了我们的需求,或者说我们有更美的灵感与创造的时候,我们也可以自己定义样式。
我们使用 mpf.make_mpf_style()函数来设定新的风格样式,然后将其传给mpf.plot()的参数style即可。

第一步,我们照常扒拉数据:

# 从tushare调取 牧原股份(002714.SZ) 股价数据
import tushare as ts
import pandas as pd
import mplfinance as mpf
token = 'Your token'   # 输入你的接口密匙,获取方式及相关权限见Tushare官网。
pro = ts.pro_api(token)
df = pro.daily(ts_code='002714.SZ') 

# 然后 将该DataFrame对象处理为适合我们使用的格式
df = df.loc[:, ['trade_date', 'open', 'high', 'low', 'close', 'vol']]
df.rename(
    columns={
    
        'trade_date': 'Date', 'open': 'Open',
        'high': 'High', 'low': 'Low',
        'close': 'Close', 'vol': 'Volume'},
    inplace=True)       # 重定义列名,方便统一规范操作。
df['Date'] = pd.to_datetime(df['Date'])  # 转换日期列的格式,便于作图
df.set_index(['Date'], inplace=True)  # 将日期列作为行索引
df = df.sort_index()  # 倒序,因为Tushare的数据是最近的交易日数据显示在DataFrame上方,倒序后方能保证作图时X轴从左到右时间序列递增。

第二步,我们先使用一下mpf.make_marketcolors()函数,来设定一下K线的颜色方面的信息。一会儿要把这个设定的结果作为实参传给mpf.make_mpf_style()来设定自定义的风格样式。

mc = mpf.make_marketcolors(
    up="red",  # 上涨K线的颜色
    down="green",  # 下跌K线的颜色
    edge="black",  # 蜡烛图箱体的颜色
    volume="blue",  # 成交量柱子的颜色
    wick="black"  # 蜡烛图影线的颜色
)

# 还有一个叫alpha的参数,设置的是candlestick face,取值在0.1-1之间。这个设置的是K线蜡烛颜色的深浅,比如把当alpha设置为0.6的时候红色蜡烛就变成了接近橘黄色。绿色就变成了翠绿色。这个根据自己的感官来尝试选择就好啦。

mc设置好后,接下来我们要将其传给mpf.make_mpf_style()的marketcolors参数,来设定自定义的风格样式了。

第三步,我们开始设定自定义的风格样式了。
使用mpf.make_mpf_style函数,其参数有:

  • base_mpf_style:继承内置的风格,不想继承的话就不需要设置。这里我们不设置,纯靠自定义。

  • mavcolors 设置均线样式,必须使用列表传参

  • facecolor 设置前景色(坐标系颜色)

  • edgecolor 设置框线样式

  • figcolor 设置图像外周边填充色

  • gridcolor 设置网格线颜色

  • gridaxis 设置网格线方向,both双向 'horizontal’水平, 'vertical’垂直

  • gridstyle 设置网格线线型 例如
    ‘-’/‘solid’, ‘–’/‘dashed’, ‘-.’/‘dashdot’, ‘:’/‘dotted’, None/’ ‘/’’

  • y_on_right 设置y轴位置是否在右

  • rc 使用rcParams的dict设置样式,如果内容与上面的自定义设置相同,那么自定义设置覆盖rcParams设置
    这个参数常用的写法为:
    rc={‘font.family’: ‘SimHei’, ‘axes.unicode_minus’: ‘False’}
    是用来解决 mplfinance库生成的图象 中文乱码 和不显示负数的问题的。

  • marketcolors 就是上一步我们定义的那个K线的属性,把它传入就OK了。

s = mpf.make_mpf_style(
    gridaxis='both',
    gridstyle='-.',
    y_on_right=True,
    marketcolors=mc,
    edgecolor='b',
    figcolor='r',
    facecolor='y', 
    gridcolor='c')

第四步,开始使用mpf.plot()绘图了,传入上边设定好的风格s

mpf.plot(df.loc['2020-11': '2020-12'], type='candle', ylabel="price", style=s, title='A_stock-Muyuan 2020-Nov&Dec_candle_line', mav=(5, 10), volume=True, ylabel_lower="volume(shares)")

最终效果如图所示:
在这里插入图片描述


呃呃呃…找了半天,mplfinance库貌似也是存在一个缺点的。
源代码扒了半天也没有找到能自定义背景图的图片的参数,
也许是考虑到金融量化不需要二次元吧。
这对于二次元宅无疑是一项不小的打击。
算了,matplotlib.pyplot虽然句子写得长些,这一点还是挺好的哈哈哈哈哈哈。


更多方法技巧点击下方姊妹篇文章链接:

mplfinance基本参数介绍:
Python mplfinance库绘图① 基本参数介绍(简单秒懂)

关于如何解决 mplfinance 中文乱码 和 图像不正常显示负数的问题:
Python mapfinance库②中文标题乱码 与 显示负数 解决方案

关于如何在这种高度封装的状态下绘图时添加一条其他曲线:
Python mplfinance库绘图③ 如何额外添加一条其他图线

目录
相关文章
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
1080 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
789 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
1090 0
|
缓存 监控 供应链
唯品会自定义 API 自定义操作深度分析及 Python 实现
唯品会开放平台提供丰富API,支持商品查询、订单管理、促销活动等电商全流程操作。基于OAuth 2.0认证机制,具备安全稳定的特点。通过组合调用基础接口,可实现数据聚合、流程自动化、监控预警及跨平台集成,广泛应用于供应链管理、数据分析和智能采购等领域。结合Python实现方案,可高效完成商品搜索、订单分析、库存监控等功能,提升电商运营效率。
|
缓存 监控 供应链
京东自定义 API 操作深度分析及 Python 实现
京东开放平台提供丰富API接口,支持商品、订单、库存等电商全链路场景。通过自定义API组合调用,可实现店铺管理、数据分析、竞品监控等功能,提升运营效率。本文详解其架构、Python实现与应用策略。
缓存 监控 供应链
500 0
缓存 监控 数据挖掘
329 0
|
Python
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
pip批量安装Python库 requirement.txt 离线环境无互联网环境下pip安装Python库
1866 3
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:
确保你已经安装了`python-barcode`库。如果没有,可以通过pip来安装:
|
开发工具 git Python
安装和使用`libnum`是一个用于数字理论函数的Python库
【6月更文挑战第19天】`libnum`是Python的数字理论函数库。安装可通过`git clone`,进入目录后运行`python setup.py install`,也可用`pip install libnum`。示例:使用`int_to_hex`将十进制数42转换为十六进制字符串'2a'。注意,信息可能已过时,应查最新文档以确保准确性。如遇问题,参考GitHub仓库或寻求社区帮助。
588 1

推荐镜像

更多