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

Python中Heatmap与Candlestick图表叠加显示问题求助

热力图与蜡烛图叠加显示解决方案

核心原因分析

单独运行正常但叠加失效,基本不是图层透明度(alpha)的问题,而是绘图对象未共享同一画布/坐标轴,或者坐标轴刻度/范围不匹配导致其中一个图层被挤出可视区域。

具体修复步骤(分两种主流绘图库)

如果你用的是Matplotlib

  1. 统一画布与坐标轴:
    import matplotlib.pyplot as plt
    
    # 创建唯一的画布和主坐标轴
    fig, ax_base = plt.subplots(figsize=(12,6))
    
  2. 绘制热力图到主坐标轴:
    # 指定ax_base为热力图的绘图坐标轴,确保范围与蜡烛图对齐
    im = ax_base.imshow(heatmap_data, extent=[x_min, x_max, y_min, y_max], aspect='auto')
    
  3. 创建共享x轴的副坐标轴用于蜡烛图:
    ax_candle = ax_base.twinx()
    # 绘制蜡烛图到ax_candle,保证x轴数据和热力图完全匹配
    ax_candle.plot(candle_x, candle_y_open, ...)  # 替换为你的蜡烛图绘制逻辑
    
  4. 强制层级与范围适配:
    # 提升蜡烛图层级,确保显示在热力图上方
    ax_candle.set_zorder(ax_base.get_zorder() + 1)
    # 隐藏副坐标轴背景,避免遮挡热力图
    ax_candle.patch.set_visible(False)
    # 手动对齐两个坐标轴的范围
    ax_base.set_xlim(x_min, x_max)
    ax_candle.set_xlim(x_min, x_max)
    

如果你用的是Plotly

  1. 创建共享子图:
    from plotly.subplots import make_subplots
    import plotly.graph_objects as go
    
    fig = make_subplots(rows=1, cols=1, shared_xaxes=True)
    
  2. 依次添加热力图和蜡烛图的trace:
    # 添加热力图,设置透明度避免完全遮挡
    fig.add_trace(go.Heatmap(z=heatmap_data, x=x_vals, y=y_vals, opacity=0.5), row=1, col=1)
    # 添加蜡烛图到同一子图
    fig.add_trace(go.Candlestick(x=candle_x, open=open_vals, high=high_vals, low=low_vals, close=close_vals), row=1, col=1)
    
  3. 调整布局确保显示正常:
    fig.update_layout(xaxis_rangeslider_visible=False)  # 按需关闭滑动条
    fig.show()
    

针对你的combine.py的关键检查点

  • 不要多次调用plt.figure()(Matplotlib)或重复创建Figure对象(Plotly),必须用同一个画布承载两个图层
  • 确认热力图和蜡烛图的x轴数据是完全匹配的时间/数值刻度,否则会出现错位或其中一个图层不可见
  • 若用Matplotlib,检查是否给每个绘图函数指定了对应的ax参数,默认绘图会用当前坐标轴,容易引发冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:18:10