-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
Adding an example of source lines or notes on the bottom of graphs #4873
base: doc-prod
Are you sure you want to change the base?
Conversation
This documents a work around for the canonical problem that Issue 3084 proposes to solve. |
@gvwilson Please advise about a road forward on this documentation PR. I'd welcome clarity about whether it is useful and, if so, how to revise and publish it. I see @LiamConnors was unassigned and then unassigned. I'm looking forward to engaging with the right person. I am honored to work with the Plotly team to make this project more useful. |
@rl-utility-man sorry for the delay. I'll take a look at it this week |
doc/python/text-and-annotations.md
Outdated
#Use the title for the source line | ||
fig.update_layout( | ||
title=dict(text="Note: a near zero container coordinate is the most robust way to position this on the bottom. Only the 'title' supports container coordinates.", | ||
yref="container", | ||
# A small positive y coordinate avoids cutting off the descending strokes of letters like y, p, and q. | ||
y=0.005, | ||
# Paper coordinates let us align this at either edge of the plot region |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the effort on this one @rl-utility-man
I like the idea. When I tried the example, some of the text is cut off
Makes me wonder if it's just maybe too specific of an example for the docs. Will it be difficult to get it working if your text looks different or you're running it in a specific environment?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point about the cut off text! I reworked the example with short text that works well at a wide variety of screen resolutions and added a comment to the code warning about over long text getting cut off. I also rewrote the comments and documentation text to clarify out the general points I am trying to make with this example. Let me know what you think of the revised version.
@LiamConnors Please let me know if my edits make this useful documentation and addressed your concerns. I think this example consolidates insights that would otherwise require reading and thinking about several different sections of the documentation. Many thanks! |
Thanks @rl-utility-man! will try this out tomorrow |
```import plotly.express as px | ||
df_iris = px.data.iris() | ||
fig = px.scatter(df_iris, x="sepal_width", y="sepal_length", color="species", | ||
size='petal_length', hover_data=['petal_width']) | ||
|
||
#Use the title for the source / note line |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
```import plotly.express as px | |
df_iris = px.data.iris() | |
fig = px.scatter(df_iris, x="sepal_width", y="sepal_length", color="species", | |
size='petal_length', hover_data=['petal_width']) | |
#Use the title for the source / note line | |
```python | |
import plotly.express as px | |
df = px.data.iris() |
For the examples in the docs, if there's only one dataframe in that example, we suggest always calling it df
for consistency
|
||
This example shows how to put a terse note about the data source or interpretation at the bottom of the figure. This example achieves the desired alignment in the bottom right corner using the title element and container coordinates and then uses an annotation to add a figure title. A near zero container coordinate is an easy and robust way to put text -- such as a source line or figure note -- at the bottom of a figure. It is easier to specify the bottom of the figure in container coordinates than in e.g. a paper coordinate since uncertainty about the size of legends and x-axis labels make the paper coordinate of the bottom of the figure uncertain. Making the y container coordinate very slightly positive avoids cutting off the descending strokes of letters like y, p, and q. Only the title command supports container coordinates, so this example repurposes the title element to insert the note and repurposes an annotation element for the title. The top of the figure is typically less cluttered and more predictable, so an annotation with its bottom at a paper y-coordinate slightly greater than 1 is a reasonable title location on many graphs. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This example shows how to put a terse note about the data source or interpretation at the bottom of the figure. This example achieves the desired alignment in the bottom right corner using the title element and container coordinates and then uses an annotation to add a figure title. A near zero container coordinate is an easy and robust way to put text -- such as a source line or figure note -- at the bottom of a figure. It is easier to specify the bottom of the figure in container coordinates than in e.g. a paper coordinate since uncertainty about the size of legends and x-axis labels make the paper coordinate of the bottom of the figure uncertain. Making the y container coordinate very slightly positive avoids cutting off the descending strokes of letters like y, p, and q. Only the title command supports container coordinates, so this example repurposes the title element to insert the note and repurposes an annotation element for the title. The top of the figure is typically less cluttered and more predictable, so an annotation with its bottom at a paper y-coordinate slightly greater than 1 is a reasonable title location on many graphs. | |
This example shows how to add a note about the data source or interpretation at the bottom of the figure. This example aligns the note in the bottom right corner using the title element and container coordinates and then uses an annotation to add a figure title. A near zero container coordinate is an easy and robust way to put text -- such as a source line or figure note -- at the bottom of a figure. It is easier to specify the bottom of the figure in container coordinates than using paper coordinates, since uncertainty about the size of legends and x-axis labels make the paper coordinate of the bottom of the figure uncertain. Making the y container coordinate very slightly positive avoids cutting off the descending strokes of letters like y, p, and q. Only the title command supports container coordinates, so this example re-purposes the title element to insert the note and re-purposes an annotation element for the title. The top of the figure is typically less cluttered and more predictable, so an annotation with its bottom at a paper y-coordinate slightly greater than 1 is a reasonable title location on many graphs. | |
Just made a few small edit suggestions (not as many as the diff suggests). For example, it looks like it's this is a direct comparison between paper coordinates and container coordinates. Is that right? Then, I don't think we need to say "e.g"
"than in e.g. a paper coordinate since uncertainty"
xanchor="right", | ||
x=1, | ||
font=dict(size=12)), | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this line go?
# Aligning this flush with the right edge of the plot area is | ||
# predictable and easy to code. | ||
# Putting the title in the lower left corner, aligned with the left edge of the axis labeling would |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# Aligning this flush with the right edge of the plot area is | |
# predictable and easy to code. | |
# Putting the title in the lower left corner, aligned with the left edge of the axis labeling would | |
# Aligning this flush with the right edge of the plot area is | |
# more predictable and requires less configuration | |
# Putting the title in the lower left corner, aligned with the left edge of the axis labeling would |
Would this also be true? I think it might make it more precise. What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me @rl-utility-man. Thanks for adding this! I just left a few additional comments.
Please uncomment this block and take a look at this checklist if your PR is making substantial changes to documentation/impacts files in the
doc
directory. Check all that apply to your PR, and leave the rest unchecked to discuss with your reviewer! Not all boxes must be checked for every PR :)If your PR modifies code of the
plotly
package, we have a different checklistbelow :-).
Documentation PR
doc/README.md
filedoc-prod
branch OR it targets themaster
branchpx
example if at all possibleplotly.graph_objects as go
/plotly.express as px
/plotly.io as pio
df
fig = <something>
call is high up in each new/modified example (eitherpx.<something>
ormake_subplots
orgo.Figure
)fig.add_*
andfig.update_*
rather thango.Figure(data=..., layout=...)
in every new/modified examplefig.add_shape
andfig.update_xaxes
are used instead of bigfig.update_layout
calls in every new/modified examplefig.show()
is at the end of each new/modified exampleplotly.plot()
andplotly.iplot()
are not used in any new/modified exampleCode PR
plotly.graph_objects
, my modifications concern thecodegen
files and not generated files.modified existing tests.
new tutorial notebook (please see the doc checklist as well).
-->