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

Add performance doc #4769

Merged
merged 25 commits into from
Nov 4, 2024
Merged

Add performance doc #4769

merged 25 commits into from
Nov 4, 2024

Conversation

LiamConnors
Copy link
Member

Documentation PR

  • I've seen the doc/README.md file
  • 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
  • Every new/modified example has a descriptive title and motivating sentence or paragraph
  • Every new/modified example is independently runnable
  • 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
  • The random seed is set if using randomly-generated data in new/modified examples
  • New/modified remote datasets are loaded from https://plotly.github.io/datasets and added to https://github.com/plotly/datasets
  • Large computations are avoided in the new/modified examples in favour of loading remote datasets that represent the output of such computations
  • Imports are plotly.graph_objects as go / plotly.express as px / plotly.io as pio
  • Data frames are always called df
  • fig = <something> call is high up in each new/modified example (either px.<something> or make_subplots or go.Figure)
  • 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
  • fig.show() is at the end of each new/modified example
  • plotly.plot() and plotly.iplot() are not used in any new/modified example
  • Hex codes for colors are not used in any new/modified example in favour of these nice ones

Code PR

  • I have read through the contributing notes and understand the structure of the package. In particular, if my PR modifies code of plotly.graph_objects, my modifications concern the codegen files and not generated files.
  • I have added tests (if submitting a new feature or correcting a bug) or
    modified existing tests.
  • For a new feature, I have added documentation examples in an existing or
    new tutorial notebook (please see the doc checklist as well).
  • I have added a CHANGELOG entry if fixing/changing/adding anything substantial.
  • For a new feature or a change in behaviour, I have updated the relevant docstrings in the code to describe the feature or behaviour (please see the doc checklist as well).

-->

@LiamConnors
Copy link
Member Author

@marthacryan @archmoj could I get your feedback on this first draft?
cc @ndrezn


## Unsupported Attributes

Arrays passsed to attributes with the following names do not use the Plotly.js base64 typed arrays functionality:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we should even bring up base64 here. Maybe it could just say something like "performance improvements related to using pandas and numpy arrays"?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Along the same lines, maybe we could rename this file

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right. That info probably isn't that useful for the user. And I'll rename the file too. Thanks @marthacryan

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made those updates. There's still a mention here. Is it base64-encoded typed arrays support in Plotly.js specifically that allows for the improved performance?

Plotly.py uses Plotly.js for rendering, which supports base64-encoded typed arrays. In Plotly.py, NumPy array and NumPy-convertible arrays are base64 encoded before being passed to Plotly.js for rendering.

doc/python/b64.md Outdated Show resolved Hide resolved
@gvwilson gvwilson added P2 considered for next cycle documentation written for humans labels Sep 23, 2024
@LiamConnors LiamConnors changed the title Typed arrays docs Add performance doc Sep 23, 2024
@LiamConnors LiamConnors marked this pull request as ready for review September 23, 2024 17:52
doc/python/webgl-vs-svg.md Outdated Show resolved Hide resolved
doc/python/webgl-vs-svg.md Outdated Show resolved Hide resolved
doc/python/webgl-vs-svg.md Outdated Show resolved Hide resolved
Co-authored-by: Nathan Drezner <38958867+ndrezn@users.noreply.github.com>
doc/python/webgl-vs-svg.md Outdated Show resolved Hide resolved
@LiamConnors LiamConnors requested review from archmoj and ndrezn October 22, 2024 14:52
@LiamConnors
Copy link
Member Author

@marthacryan do you have any additional feedback on this one?

@marthacryan
Copy link
Collaborator

Maybe we should rename the file as well to be called performance. Also, it was sort of hard to find the numpy section because the webgl part was so long. I wonder if we could split them into separate pages that are both linked from the performance page? Or is there some kind of table of contents or link that could be added to the top of the doc to make it easy to jump to the section on numpy arrays?

@LiamConnors
Copy link
Member Author

Maybe we should rename the file as well to be called performance. Also, it was sort of hard to find the numpy section because the webgl part was so long. I wonder if we could split them into separate pages that are both linked from the performance page? Or is there some kind of table of contents or link that could be added to the top of the doc to make it easy to jump to the section on numpy arrays?

Thanks @marthacryan. When it is in the docs, there will be sidebar with the TOC:

image

It's a good point about the Webgl section though. Some of the examples I think could go. Taking a look.

@LiamConnors LiamConnors changed the base branch from master to version-6-migration November 4, 2024 16:00
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be great to combine https://plotly.com/python/datashader/ into this page too!

@LiamConnors LiamConnors merged commit 2a1f49a into version-6-migration Nov 4, 2024
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation written for humans P2 considered for next cycle
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants