首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Plotly如何消除蜡烛棒图表中的日期时间间隔?

Python Plotly如何消除蜡烛棒图表中的日期时间间隔?
EN

Stack Overflow用户
提问于 2020-09-07 23:15:33
回答 3查看 1.5K关注 0票数 5

我正在尝试删除我的烛台中的日期时间间隔(这些间隔是股票市场关闭的时间段,因此没有数据)。似乎找不到一个好的解决方案来使用绘图图形对象。有没有可行的办法呢?

我的代码如下(使用绘图图形对象):

代码语言:javascript
复制
import dash
import dash_core_components as dcc
import dash_table
import pandas as pd
import dash_html_components as html
import numpy as np
from dash.dependencies import Output, Input, State
import plotly.graph_objects as go
import yfinance as yf
import plotly.express as px
from datetime import datetime, timedelta
from pytz import timezone
import dash_bootstrap_components as dbc

df= yf.Ticker('aapl')
df = df.history(interval="5m",period="5d")
df["Datetime"] = df.index

trace1 = {
    'x': df.Datetime,
    'open': df.Open,
    'close': df.Close,
    'high': df.High,
    'low': df.Low,
    'type': 'candlestick',
    'name': 'apple,
    'showlegend': False
    }

data = [trace1]

# Config graph layout
layout = go.Layout({
        'title': {
            'text': str(input_value) + ' Stock',
            'font': {
                'size': 15
            }
        },
        'plot_bgcolor': '#2E2E2E'
    })
fig = go.Figure(data=data, layout=layout)
fig.update_layout(xaxis_rangeslider_visible=False)

if __name__ == '__main__':
    app.run_server(debug=True)
EN

回答 3

Stack Overflow用户

发布于 2021-01-11 05:43:23

你可以在plotly中通过rangebreaks实现这一点。

下面是隐藏在交易时间和周末之外的代码。

代码语言:javascript
复制
    fig = go.Figure(data=[go.Candlestick(x=df['date'], open=df['Open'], high=df['High'], low=df['Low'], close=df['Close'])])
    fig.update_xaxes(
        rangeslider_visible=True,
        rangebreaks=[
            # NOTE: Below values are bound (not single values), ie. hide x to y
            dict(bounds=["sat", "mon"]),  # hide weekends, eg. hide sat to before mon
            dict(bounds=[16, 9.5], pattern="hour"),  # hide hours outside of 9.30am-4pm
            # dict(values=["2019-12-25", "2020-12-24"])  # hide holidays (Christmas and New Year's, etc)
        ]
    )
    fig.update_layout(
        title='Stock Analysis',
        yaxis_title=f'{symbol} Stock'
    )

    fig.show()

这是Plotly's doc

票数 1
EN

Stack Overflow用户

发布于 2021-07-10 08:14:01

我们可以设置rangebreaks选项:

  1. 在我们有差距的地方填充nan (例如,为所有配置值重新索引datebreaks nan
  2. xaxes配置

上设置范围中断值

代码语言:javascript
复制
begin_date, end_date = [df.iloc[0].name, df.iloc[-1].name]
df = df.reindex(pd.date_range(begin_date, end_date, freq='D'))
datebreaks = df['Close'][df_plot['Close'].isnull()].index
fig.update_xaxes(rangebreaks=[dict(values=datebreaks)])
票数 1
EN

Stack Overflow用户

发布于 2020-12-25 20:36:13

TLDR:我遇到了同样的问题,并且在plotly文档中找不到任何解决方案。我在plotly R社区找到的唯一建议是将x轴作为类别,而不是datetime。我仍然不能让它工作,因为fig.layout()没有这样的属性可用。

对于您的代码,将Datetime更改为string,以强制其为none datetime类型轴

代码语言:javascript
复制
df["Datetime"] = df.index.dt.strftime("%Y/%m/%d %H:%M")

这应该解决了日期时间间隔的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63780293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档