add faceting support for all figure factory methods
Closes: https://github.com/plotly/plotly.py/issues/4724
Documentation PR
- [x] I've seen the
doc/README.mdfile - [x] This change runs in the current version of Plotly on PyPI and targets the
doc-prodbranch OR it targets themasterbranch - [ ] If this PR modifies the first example in a page or adds a new one, it is a
pxexample 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 (eitherpx.<something>ormake_subplotsorgo.Figure) - [ ] Liberal use is made of
fig.add_*andfig.update_*rather thango.Figure(data=..., layout=...)in every new/modified example - [ ] Specific adders and updaters like
fig.add_shapeandfig.update_xaxesare used instead of bigfig.update_layoutcalls in every new/modified example - [ ]
fig.show()is at the end of each new/modified example - [ ]
plotly.plot()andplotly.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
- [x] 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 thecodegenfiles 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).
- [x] I have added a CHANGELOG entry if fixing/changing/adding anything substantial.
- [ ] For a new feature or a change in behaviour, I have updat
- [ ] ed the relevant docstrings in the code to describe the feature or behaviour (please see the doc checklist as well).
@nicolaskruchten, this attempts to resolve #2646. I feel like there sould be more to do than this, but the default spacing seems to be reasonable...
Thanks! I'll take a look in a couple of weeks as we prepare for the next release of Plotly.py :) For spacing, what sizes of figures did you spot-check/how many rows/how many columns?
I only checked 2x2. I'll can go back through with 3x3 perhaps, and also provide the scripts I used to check them as that'll probably make validation a little easier for you.
I've realised that spacing depends a lot more on window size than I had originally appreciated 🙈. Also, the row, column, and subplot titles seem to overlap, but I'm not sure if this is a Python issue or a JS issue? I haven't found a way to modify it.

Yeah, this kind of thing is what we need to come up with a good heuristic for...
This PR adds facet support to some chart types that currently don't support faceting, so with re-work it could be merged.