【问题标题】:How to add line chart on candlesticks chart in plotly python如何在plotly python中的烛台图表上添加折线图
【发布时间】:2021-08-23 14:34:18
【问题描述】:

我在 plotly python 中有一些股票的烛台图。图片如下:

这工作正常。但是当我尝试添加折线图时。一切都散了。图片如下:

有什么办法可以改正吗? 以下是我的代码:

response = response.json()['values']
ts = pd.DataFrame.from_records(response)
fig = go.Figure(data=[go.Candlestick(x=ts['datetime'],
                                         open=ts['open'],
                                         high=ts['high'],
                                         low=ts['low'],
                                         close=ts['close'],
                                         line=dict(width=1))])

 response_ti = response_ti.json()['values']
 df_ti = pd.DataFrame.from_records(response_ti)
 fig.add_trace(go.Line(x=df_ti['datetime'],y=df_ti[technical_indicator],))

【问题讨论】:

    标签: python plotly linechart plotly-python candlestick-chart


    【解决方案1】:
    • 使用公共 API 重新创建
      1. 更改列名,以便您的绘图代码不会更改
      2. 假设技术指标
      3. 使用go.Line() 忽略不推荐使用的警告
    • 图表创建时没有您注意到的问题。我只能假设
      • 您的两个数据框之间的 datetime 列不一致
      • 版本问题,这是使用 plotly 5.2.1
      • 创建的
    import yfinance as yf
    import plotly.graph_objects as go
    from stockstats import StockDataFrame
    
    appl = yf.Ticker("AAPL")
    
    # get stock info
    ts = (
        appl.history("1y")
        .reset_index()
        .pipe(lambda d: d.rename(columns={c: c.lower() if c != "Date" else "datetime" for c in d.columns}))
    )
    
    fig = go.Figure(data=[go.Candlestick(x=ts['datetime'],
                                             open=ts['open'],
                                             high=ts['high'],
                                             low=ts['low'],
                                             close=ts['close'],
                                             line=dict(width=1))])
    
    
    df_ti = StockDataFrame.retype(ts)
    technical_indicator = "close_10_sma"
    fig.add_trace(go.Line(x=df_ti['datetime'],y=df_ti[technical_indicator],))
    

    【讨论】: