plotly.py icon indicating copy to clipboard operation
plotly.py copied to clipboard

Fix "Update Button" example in Python custom buttons doc page

Open conpierce8 opened this issue 3 years ago • 0 comments

TL;DR

The annotations in the Update Button example in the Python docs do not update correctly when the buttons are clicked (see images below), apparently due to positioning the annotations using date values on a non-date xaxis. This pull request modifies the code defining the annotations so that the buttons update correctly.

Issue Description

Observed behavior:

When the "High", "Low", and "Both" buttons are clicked:

  • The "Low Min" and "High Max" annotations do not appear
  • The "High Average" and "Low Average" traces do not appear
  • The "High" and "Low" traces do not toggle visibility

The images below show the appearance of the plot

  1. In its initial state
  2. After clicking the "High" button
  3. After clicking the "Low" button
  4. After clicking the "Both" button

Initial state: initial_state

"High" clicked: high

"Low" clicked: low

"Both" clicked: both

Expected behavior:

  1. When "None" is clicked, the plot will display the "High" and "Low" traces with no annotations
  2. When "High" is clicked, the plot will display the "High" and "High Average" traces, and the "High Average" and "High Max" annotations
  3. When "Low" is clicked, the plot will display the "Low" and "Low Average" traces, and the "Low Average" and "Low Min" annotations
  4. When "Both" is clicked, the plot will display all traces and annotations.

Proposed solution

  • Change the x position of the "High Average" and "Low Average" annotations to use numerical values instead of date values.
  • Specify the xanchor, yanchor, xref, and yref attributes for the "High Average" and "Low Average" annotations to ensure correct positioning of the annotations to the left of the figure yaxis.
  • Eliminate usage of hex colors in the example.

Documentation PR

  • [x] I've seen the doc/README.md file
  • [x] This change runs in the current version of Plotly on PyPI and targets the doc-prod branch OR it targets the master branch
  • [ ] ~~If this PR modifies the first example in a page or adds a new one, it is a px example if at all possible~~ Does not modify the first example or add a new example.
  • [x] Every new/modified example has a descriptive title and motivating sentence or paragraph
  • [x] Every new/modified example is independently runnable
  • [x] Every new/modified example is optimized for short line count and focuses on the Plotly/visualization-related aspects of the example rather than the computation required to produce the data being visualized
  • [ ] ~~Meaningful/relatable datasets are used for all new examples instead of randomly-generated data where possible~~ No new examples added.
  • [ ] ~~The random seed is set if using randomly-generated data in new/modified examples~~ No randomly-generated data is used.
  • [ ] ~~New/modified remote datasets are loaded from https://plotly.github.io/datasets and added to https://github.com/plotly/datasets~~ No datasets added or modified.
  • [x] Large computations are avoided in the new/modified examples in favour of loading remote datasets that represent the output of such computations
  • [x] Imports are plotly.graph_objects as go / plotly.express as px / plotly.io as pio
  • [x] Data frames are always called df
  • [x] fig = <something> call is high up in each new/modified example (either px.<something> or make_subplots or go.Figure)
  • [x] Liberal use is made of fig.add_* and fig.update_* rather than go.Figure(data=..., layout=...) in every new/modified example
  • [ ] Specific adders and updaters like fig.add_shape and fig.update_xaxes are used instead of big fig.update_layout calls in every new/modified example
  • [x] fig.show() is at the end of each new/modified example
  • [x] plotly.plot() and plotly.iplot() are not used in any new/modified example
  • [x] Hex codes for colors are not used in any new/modified example in favour of these nice ones

conpierce8 avatar Jun 23 '22 21:06 conpierce8