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

如何在Plotly蜡烛图的X轴添加特定条件的指标点

在Plotly蜡烛图上添加条件标记点的实现方法

你可以通过以下步骤实现需求:

1. 为DataFrame添加条件布尔列

先根据你的特定判断逻辑,在DataFrame中新增布尔值列,用来标记每根K线是否满足条件。示例中以「收盘价高于开盘价」作为条件,你可以替换成自己的业务逻辑:

# 自定义条件示例:标记阳线K线
df['meets_condition'] = df['Close'] > df['Open']

2. 添加散点图标记点

使用go.Scatter在蜡烛图的X轴对应位置绘制标记点,通过布尔列的值来区分颜色,同时将点放在K线最低价下方靠近X轴的位置,避免遮挡K线:

fig.append_trace(
    go.Scatter(
        x=df.index,
        # 将点设置在K线最低价的99%位置,贴近X轴
        y=df['Low'] * 0.99,
        mode='markers',
        # 根据布尔值设置颜色:满足条件用黄色,不满足用紫色
        marker=dict(
            color=['yellow' if cond else 'purple' for cond in df['meets_condition']],
            size=8,
            symbol='circle'
        ),
        # 隐藏图例,避免干扰蜡烛图展示
        showlegend=False
    ),
    row=1, col=1
)

3. 调整Y轴范围(可选)

为了确保标记点不会被图表边界截断,可以手动调整Y轴的范围:

fig.update_yaxes(range=[df['Low'].min() * 0.98, df['High'].max() * 1.02])

完整代码

import yfinance as yf
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots

djia = yf.Ticker("DJIA")
df = djia.history(start="2022-01-01", end="2022-12-31", interval="1d")

# 新增条件布尔列,替换成你的自定义判断逻辑
df['meets_condition'] = df['Close'] > df['Open']

fig = make_subplots(rows=1, cols=1)

# 添加蜡烛图
fig.append_trace(
    go.Candlestick(
        x=df.index,
        open=df["Open"],
        high=df["High"],
        low=df["Low"],
        close=df["Close"]
    ), row=1, col=1
)

# 添加条件标记点
fig.append_trace(
    go.Scatter(
        x=df.index,
        y=df['Low'] * 0.99,
        mode='markers',
        marker=dict(
            color=['yellow' if cond else 'purple' for cond in df['meets_condition']],
            size=8
        ),
        showlegend=False
    ),
    row=1, col=1
)

# 隐藏周末空白
fig.update_xaxes(rangebreaks=[dict(bounds=["sat", "mon"])])
# 调整Y轴范围,确保标记点显示完整
fig.update_yaxes(range=[df['Low'].min() * 0.98, df['High'].max() * 1.02])

fig.show()

说明

  • 你可以完全自定义meets_condition列的生成逻辑,比如基于成交量、RSI、MACD等技术指标的判断;
  • 如果需要区分多种条件,可以新增多个布尔列,或者用数值列(如0、1、2)来对应不同颜色,修改color参数的生成逻辑即可;
  • 标记点的位置可以通过调整y参数来改变,比如放在K线最高价上方,或者固定在Y轴某个位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:10:38