You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在mplfinance绘制的OHLCV折线图的每段折线变化处添加标记点

解决方案

实现这个需求的核心是保证散点数据和折线数据的索引完全对齐,不需要单独生成坐标列表,直接在原始K线DataFrame中加工数据即可,完整实现步骤如下:

  • 首先计算每根K线的中点值,直接新增为原DataFrame的列,和原数据共用索引,天然和折线坐标对齐
# 中点计算规则可按需调整,此处为(最高价+最低价)/2,也可改为(开盘价+收盘价)/2
data['kline_mid'] = (data['High'] + data['Low']) / 2
  • 构造散点附加图层,直接传入刚才生成的中点列,可自定义标记样式匹配你的效果图
# markersize调整点的大小,color调整颜色,marker可换不同形状
scatter_layer = mpf.make_addplot(data['kline_mid'], type='scatter', markersize=50, color='#ff0000')
  • 调用mpf.plot()时传入附加图层参数即可完成绘制

完整可运行示例代码:

import mplfinance as mpf
import yfinance as yf

# 拉取最近50根K线数据
data = yf.download('AAPL', period='75d').tail(50)
# 计算K线中点
data['kline_mid'] = (data['High'] + data['Low']) / 2

# 若需要仅在特定位置显示点,将不需要显示的位置设为NaN即可,例:仅上涨K线显示点
# data['kline_mid'] = data['kline_mid'].where(data['Close'] > data['Open'], float('nan'))

savefig = dict(fname="test.jpg", bbox_inches="tight")
mpf.plot(
    data,
    type='line',
    axisoff=True,
    addplot=scatter_layer,
    savefig=savefig
)

如果需要调整散点和折线的层级关系、透明度等样式,可在make_addplot中传入alpha、zorder等参数调整。

内容的提问来源于stack exchange,提问作者Sacci_Spacci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:24:03