Figures#
Guiding principles
Please do not set the figure size and style unless there is a good reason to do so.
Use code generated figures whenever possible rather than include static files.
See also
Configuration
A QuantEcon lecture series will set the figure size and padding style by default in the _config.yml.
This configuration can be found in the QuantEcon lecture repo setup guide
Plots and figures can be either generated from code or
included through the use of static image files (i.e. png or pdf) using
the figure directive.
See also
The jupyter-book documentation for figures and code generated images are useful resources.
The following rules apply when including both figure types:
elminating all titles embedded in matplotlib (i.e. no
ax.set_title)add
titlemetadata to thefiguredirective orcode-cellmetadata as documented in the jupyter-book docsuse lower case for captions, except for the first letter (and proper nouns)
keep the caption title down to about 5~6 words max
set a descriptive
namefor use as a reference withnumrefaxis labels should be lower case (“time” not “Time”, etc.)
keep the
boxaroundmatplotlibfigures for consistency across the lectures (i.e. do not useax.splines[['top']].set_visible(False))use a
lw=2for all matplotlib figures that have line chartsFigures should be approximately 80% to 100% of the width of text to ensure they are easy to read
Tip
See the documentation to see how to use the numref role.
Code generated figures
Make sure your code returns a single figure object from the code cell.
To caption these figures you need to use mystnb metadata on the {code-cell} directive such as
For additional information see the myst-nb docs
Plotly Generated Figures#
Plotly images are a good way to add interactivity to a lecture and make the data easier to explore
thanks to hover tip tools etc.
Warning
Date: 22 Feb 2024
The usual way of adding Figure captions using mystnb cell level configuration will not work at this time as plotly returns
advanced mime type objects that causes mystnb to produce two captions for each plotly object. This in turn causes sphinx to
complain about duplicate figure labels.
To include plotly figures we need to use the following pattern to ensure both html and pdf are supported.
Please include a {only} latex directive after the figure that includes a link back to the website for any plotly plots
This link will always follow the pattern https://<lecture-series>.quantecon.org/{filename}.html#{labelref}.
Example:
(fig-scatter-example)=
```{code-cell} python
import plotly.express as px
fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
fig.show()
```
```{only} latex
This figure is interactive you may [click here to see this figure on the website](https://intro.quantecon.org/plotly.html#plotlyfig)
```
This snippet would look like the following:
import plotly.express as px
fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
fig.show()
You will notice that the {only} latex information is not seen here as that will only be processed by the latex builder.
Warning
You may use the {ref} role to reference the figure in the document
{ref}`Plotly scatter plot <fig-scatter-example>`.
such as Plotly scatter plot but you need to supply the title text in the link.
You cannot use {numref} at this time.