Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

y-values overlap when using rangebreaks #2998

Open
u3Izx9ql7vW4 opened this issue Dec 30, 2020 · 10 comments
Open

y-values overlap when using rangebreaks #2998

u3Izx9ql7vW4 opened this issue Dec 30, 2020 · 10 comments
Labels
bug something broken P3 backlog

Comments

@u3Izx9ql7vW4
Copy link

picture of behavior: https://imgur.com/a/oSBgqvp

Screen Shot 2020-12-29 at 7 49 51 PM

I believe the same issue is experienced by another user here: https://community.plotly.com/t/rangebreaks-with-bounds-and-values-show-overlapping-candlesticks/46067

code to reproduce this:
(example.pkl can be found on https://repl.it/join/pdmlylnv-angstscheisse )

import pandas as pd
import plotly.graph_objects as go

df = pd.read_pickle('example.pkl')

fig = go.Figure(data=[go.Candlestick(x=df['time'], open=df['open'], high=df['high'], low=df['low'], close=df['close'])])

fig.update_xaxes(
    rangebreaks=[
        dict(bounds=[15, 9], pattern="hour"),
        # dict(bounds=["sat", "mon"]),
        dict(values=["2020-12-25"])
    ]
)
fig.show()
@fjafferi
Copy link

Any update on this? it seems the problem still exists.

@nicolaskruchten
Copy link
Contributor

I'm having trouble loading the pickle file... can someone provide a simple reproducible example of this please?

@fjafferi
Copy link

fjafferi commented Jun 14, 2021

AAPL_1H.zip
Here is a pickle file, I just tried with the code above and it seems okay. However, i was seeing the described behavior above yesterday. Let me reproduce and provide an example.

@fjafferi
Copy link

fjafferi commented Jun 14, 2021

`import pandas as pd
import plotly.graph_objects as go

df = pd.read_pickle('AAPL_1H.pkl')

fig = go.Figure(data=[go.Candlestick(x=df.index, open=df['open'], high=df['high'], low=df['low'], close=df['close'])])

fig.update_xaxes(
rangebreaks=[
dict(bounds=[15, 9], pattern="hour"),
# dict(bounds=["sat", "mon"]),
dict(values=["2021-06-03"])
]
)
fig.show()`

So it seems the problem appears to be when passing the dates list, and if the date falls within the x range.
@nicolaskruchten
Capture

@nicolaskruchten
Copy link
Contributor

@fjafferi Thanks for the zipfile but the problem is that I can't unpickle it :) Can you send me a CSV please?

@nicolaskruchten
Copy link
Contributor

OK, I found the time to get this file parsed. With Plotly.py 5.1 (powered by Plotly.js 2.2) I'm not seeing this behaviour any more:

image

@nicolaskruchten
Copy link
Contributor

Ah but when uncomment the weekend exclusion I do see a problem:

image

I've logged the issue in the underlying Javascript library as plotly/plotly.js#5783

@Lucasdesard
Copy link

I had the exact same problem and fixed it in the following way: I changed the order of the arguments that I passed to the function such as in the following example:
fig.update_xaxes(
rangebreaks=[
dict(values=["2022-12-25"]), # hide holidays (Christmas and New Year's, etc)
dict(bounds=["sat", "mon"]), # hide weekends, eg. hide sat to before mon
dict(bounds=[18, 6], pattern="hour") # hide hours outside of 6pm-6am
]
)

@jinseo99
Copy link

jinseo99 commented Feb 1, 2024

I am having similar issue as well.
For me the issue is when the holiday and weekend are in consecutive order.

There's two cases:

  1. Sat, Sun, Mon (Holiday)
  2. Fri (Holiday), Sat, Sun.

It seems the reordering of the rangebreaks arguments fixes them but only conditionally.

For example for case 1:
The following order works:

dict(values=["2023-05-29"]), # hide holiday that is Monday
dict(bounds=["sat", "mon"]), # hide weekends

and the following causes a bug and shows y-value overlaps:

dict(bounds=["sat", "mon"]), # hide weekends
dict(values=["2023-05-29"]), # hide holiday that is Monday

This occurs reversely for case 2:
The following order works:

dict(bounds=["sat", "mon"]), # hide weekends
dict(values=["2023-04-07"]), # hide holiday that is Friday

and the following causes a bug and shows y-value overlaps:

dict(values=["2023-04-07"]), # hide holiday that is Friday
dict(bounds=["sat", "mon"]), # hide weekends

@Coding-with-Adam
Copy link
Contributor

Coding-with-Adam commented Feb 5, 2024

hi @jinseo99
Thanks for reporting. This seems related to the plotly.js #5783 issue

I've updated the priority of that bug.

@gvwilson gvwilson self-assigned this Jul 8, 2024
@gvwilson gvwilson removed their assignment Aug 2, 2024
@gvwilson gvwilson added P3 backlog bug something broken labels Aug 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug something broken P3 backlog
Projects
None yet
Development

No branches or pull requests

7 participants