如何使用mplfinance新API实现K线图与散点图的叠加绘制
使用mplfinance新API实现K线图与散点图叠加
mplfinance新API提供两种方式实现K线与其他图表的叠加,以下是具体实现方法:
准备数据
首先确保你的DataFrame满足新API要求:
- 包含
open、high、low、close列 - 索引为datetime类型
先把示例数据转换成符合要求的格式:
import pandas as pd import mplfinance as mpf # 构造示例数据 data = { 'open': [10, 11], 'high': [11, 12], 'low': [9, 10], 'close': [10, 11] } df = pd.DataFrame(data, index=pd.to_datetime(['2022-01-01', '2022-01-02'])) # 准备散点数据 scatter_dates = pd.to_datetime(['2022-01-01']) scatter_values = [10]
方法一:使用addplot参数(推荐)
新API的mpf.plot()支持通过addplot参数传入额外的绘图对象,直接实现叠加:
# 创建散点图的绘图对象 scatter_plot = mpf.make_addplot(scatter_values, type='scatter', markersize=50, color='blue', x=scatter_dates) # 绘制K线并叠加散点 mpf.plot(df, type='candle', width=0.2, colorup='k', colordown='r', alpha=1.0, addplot=scatter_plot)
方法二:手动指定坐标轴叠加
如果你需要先绘制散点再叠加K线(类似旧版逻辑),可以手动创建Matplotlib坐标轴,指定给mpf绘制K线,再在同一坐标轴上添加散点:
import matplotlib.pyplot as plt # 创建画布和坐标轴 fig, ax = plt.subplots() # 先绘制散点图 ax.scatter(scatter_dates, scatter_values, s=50, color='blue') # 在同一坐标轴上绘制K线 mpf.plot(df, type='candle', width=0.2, colorup='k', colordown='r', alpha=1.0, ax=ax) # 指定已有的坐标轴 plt.show()
注意事项
- 新API中
width参数控制K线柱的宽度,对应旧版的width colorup和colordown参数用法与旧版一致,分别指定收盘价高于开盘价、低于开盘价的K线颜色- 如果需要叠加多个图表,
addplot可以传入列表形式的多个绘图对象
内容的提问来源于stack exchange,提问作者pekinghua
相关产品推荐
相关产品推荐

