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

使用Plotly Candlestick图时仅显示X轴数据,其余数据无显示

问题:Plotly K线图仅显示X轴,无数据

尝试从Excel文件绘制K线图,无法修改原文件。通过groupby()+get_group()按年月分组,计算各月Open/High/Low/Close的均值后存入列表,程序无报错,但图表只显示X轴日期,其余数据不显示。

原代码核心问题

  • 均值格式错误:原代码中june2019.mean()会计算分组内所有列的均值,返回的是Pandas Series而非单个数值。比如mJUN19O包含了Month、Year、Open、High等所有列的均值,Plotly无法识别这种结构作为K线图的数值输入。
  • 复制粘贴错误:多处出现变量赋值错误,比如sep2019Open = aug2019['Open']、mOCT19O = sep2019.mean(),导致数据混乱。
  • 代码冗余低效:重复调用get_group()获取相同分组,既增加代码量又容易出错。

修复后的代码

import plotly.graph_objects as go
import pandas as pd

def main():
    # 读取Excel数据
    df = pd.read_excel('DatosUnited.xlsx')
    
    # 按年月分组,一次性计算目标列的均值
    monthly_means = df.groupby(['Year', 'Month']).agg(
        Open=('Open', 'mean'),
        High=('High', 'mean'),
        Low=('Low', 'mean'),
        Close=('Close/Price', 'mean')
    ).reset_index()
    
    # 筛选2019年6-12月的数据
    filtered_data = monthly_means[(monthly_means['Year'] == 2019) & (monthly_means['Month'].between(6, 12))]
    
    # 生成X轴日期标签
    dates = [f"{month}-{year}" for year, month in zip(filtered_data['Year'], filtered_data['Month'])]
    
    # 绘制K线图
    fig = go.Figure(data=[go.Candlestick(
        x=dates,
        open=filtered_data['Open'].tolist(),
        high=filtered_data['High'].tolist(),
        low=filtered_data['Low'].tolist(),
        close=filtered_data['Close'].tolist()
    )])
    
    fig.update_layout(title='2019年6-12月月度均值K线图')
    fig.show()

if __name__ == "__main__":
    main()

修复说明

  1. 批量计算均值:用groupby().agg()直接指定需要计算均值的列,生成结构清晰的DataFrame,避免重复代码和手动分组的错误。
  2. 转换数值格式:通过.tolist()将DataFrame的列转换为纯数值列表,完全符合Plotly K线图的输入要求。
  3. 精准筛选数据:用布尔索引快速筛选2019年6-12月的数据,无需逐个手动获取分组。
  4. 消除数据错误:彻底解决原代码中复制粘贴导致的变量赋值错误。

内容的提问来源于stack exchange,提问作者Adrián Desentis Flores

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:45:54