plotly.subplots: helper function for laying out multi-plot figures¶
|
Return an instance of plotly.graph_objects.Figure with predefined subplots configured in âlayoutâ. |
-
plotly.subplots.make_subplots(rows=1, cols=1, shared_xaxes=False, shared_yaxes=False, start_cell='top-left', print_grid=False, horizontal_spacing=None, vertical_spacing=None, subplot_titles=None, column_widths=None, row_heights=None, specs=None, insets=None, column_titles=None, row_titles=None, x_title=None, y_title=None, figure=None, **kwargs) → plotly.graph_objects._figure.Figure¶ Return an instance of plotly.graph_objects.Figure with predefined subplots configured in âlayoutâ.
- Parameters
rows (int (default 1)) â Number of rows in the subplot grid. Must be greater than zero.
cols (int (default 1)) â Number of columns in the subplot grid. Must be greater than zero.
shared_xaxes (boolean or str (default False)) â
Assign shared (linked) x-axes for 2D cartesian subplots
True or âcolumnsâ: Share axes among subplots in the same column
ârowsâ: Share axes among subplots in the same row
âallâ: Share axes across all subplots in the grid.
shared_yaxes (boolean or str (default False)) â
Assign shared (linked) y-axes for 2D cartesian subplots
âcolumnsâ: Share axes among subplots in the same column
True or ârowsâ: Share axes among subplots in the same row
âallâ: Share axes across all subplots in the grid.
start_cell ('bottom-left' or 'top-left' (default 'top-left')) â
Choose the starting cell in the subplot grid used to set the domains_grid of the subplots.
- âtop-leftâ: Subplots are numbered with (1, 1) in the top
left corner
- âbottom-leftâ: Subplots are numbererd with (1, 1) in the bottom
left corner
print_grid (boolean (default False):) â If True, prints a string representation of the plot grid. Grid may also be printed using the
Figure.print_grid()method on the resulting figure.horizontal_spacing (float (default 0.2 / cols)) â
Space between subplot columns in normalized plot coordinates. Must be a float between 0 and 1.
Applies to all columns (use âspecsâ subplot-dependents spacing)
vertical_spacing (float (default 0.3 / rows)) â
Space between subplot rows in normalized plot coordinates. Must be a float between 0 and 1.
Applies to all rows (use âspecsâ subplot-dependents spacing)
subplot_titles (list of str or None (default None)) â
Title of each subplot as a list in row-major ordering.
Empty strings (ââ) can be included in the list if no subplot title is desired in that space so that the titles are properly indexed.
specs (list of lists of dict or None (default None)) â
Per subplot specifications of subplot type, row/column spanning, and spacing.
ex1: specs=[[{}, {}], [{âcolspanâ: 2}, None]]
ex2: specs=[[{ârowspanâ: 2}, {}], [None, {}]]
Indices of the outer list correspond to subplot grid rows starting from the top, if start_cell=âtop-leftâ, or bottom, if start_cell=âbottom-leftâ. The number of rows in âspecsâ must be equal to ârowsâ.
Indices of the inner lists correspond to subplot grid columns starting from the left. The number of columns in âspecsâ must be equal to âcolsâ.
Each item in the âspecsâ list corresponds to one subplot in a subplot grid. (N.B. The subplot grid has exactly ârowsâ times âcolsâ cells.)
Use None for a blank a subplot cell (or to move past a col/row span).
Note that specs[0][0] has the specs of the âstart_cellâ subplot.
- Each item in âspecsâ is a dictionary.
The available keys are: * type (string, default âxyâ): Subplot type. One of
âxyâ: 2D Cartesian subplot type for scatter, bar, etc.
âsceneâ: 3D Cartesian subplot for scatter3d, cone, etc.
âpolarâ: Polar subplot for scatterpolar, barpolar, etc.
âternaryâ: Ternary subplot for scatterternary
âmapâ: Map subplot for scattermap
âmapboxâ: Mapbox subplot for scattermapbox
- âdomainâ: Subplot type for traces that are individually
positioned. pie, parcoords, parcats, etc.
- trace type: A trace type which will be used to determine
the appropriate subplot type for that trace
- secondary_y (bool, default False): If True, create a secondary
y-axis positioned on the right side of the subplot. Only valid if type=âxyâ.
- colspan (int, default 1): number of subplot columns
for this subplot to span.
- rowspan (int, default 1): number of subplot rows
for this subplot to span.
l (float, default 0.0): padding left of cell
r (float, default 0.0): padding right of cell
t (float, default 0.0): padding right of cell
b (float, default 0.0): padding bottom of cell
Note: Use âhorizontal_spacingâ and âvertical_spacingâ to adjust the spacing in between the subplots.
insets (list of dict or None (default None):) â
Inset specifications. Insets are subplots that overlay grid subplots
- Each item in âinsetsâ is a dictionary.
The available keys are:
- cell (tuple, default=(1,1)): (row, col) index of the
subplot cell to overlay inset axes onto.
type (string, default âxyâ): Subplot type
- l (float, default=0.0): padding left of inset
in fraction of cell width
- w (float or âto_endâ, default=âto_endâ) inset width
in fraction of cell width (âto_endâ: to cell right edge)
- b (float, default=0.0): padding bottom of inset
in fraction of cell height
- h (float or âto_endâ, default=âto_endâ) inset height
in fraction of cell height (âto_endâ: to cell top edge)
column_widths (list of numbers or None (default None)) â
list of length
colsof the relative widths of each column of subplots. Values are normalized internally and used to distribute overall width of the figure (excluding padding) among the columns.For backward compatibility, may also be specified using the
column_widthkeyword argument.row_heights (list of numbers or None (default None)) â
list of length
rowsof the relative heights of each row of subplots. If start_cell=âtop-leftâ then row heights are applied top to bottom. Otherwise, if start_cell=âbottom-leftâ then row heights are applied bottom to top.For backward compatibility, may also be specified using the
row_widthkwarg. If specified asrow_width, then the width values are applied from bottom to top regardless of the value of start_cell. This matches the legacy behavior of therow_widthargument.column_titles (list of str or None (default None)) â list of length
colsof titles to place above the top subplot in each column.row_titles (list of str or None (default None)) â list of length
rowsof titles to place on the right side of each row of subplots. If start_cell=âtop-leftâ then row titles are applied top to bottom. Otherwise, if start_cell=âbottom-leftâ then row titles are applied bottom to top.x_title (str or None (default None)) â Title to place below the bottom row of subplots, centered horizontally
y_title (str or None (default None)) â Title to place to the left of the left column of subplots, centered vertically
figure (go.Figure or None (default None)) â If None, a new go.Figure instance will be created and its axes will be populated with those corresponding to the requested subplot geometry and this new figure will be returned. If a go.Figure instance, the axes will be added to the layout of this figure and this figure will be returned. If the figure already contains axes, they will be overwritten.
Examples
Example 1:
>>> # Stack two subplots vertically, and add a scatter trace to each >>> from plotly.subplots import make_subplots >>> import plotly.graph_objects as go >>> fig = make_subplots(rows=2)
This is the format of your plot grid: [ (1,1) xaxis1,yaxis1 ] [ (2,1) xaxis2,yaxis2 ]
>>> fig.add_scatter(y=[2, 1, 3], row=1, col=1) Figure(...) >>> fig.add_scatter(y=[1, 3, 2], row=2, col=1) Figure(...)
or see Figure.add_trace
Example 2:
>>> # Stack a scatter plot >>> fig = make_subplots(rows=2, shared_xaxes=True)
This is the format of your plot grid: [ (1,1) xaxis1,yaxis1 ] [ (2,1) xaxis2,yaxis2 ]
>>> fig.add_scatter(y=[2, 1, 3], row=1, col=1) Figure(...) >>> fig.add_scatter(y=[1, 3, 2], row=2, col=1) Figure(...)
Example 3:
>>> # irregular subplot layout (more examples below under 'specs') >>> fig = make_subplots(rows=2, cols=2, ... specs=[[{}, {}], ... [{'colspan': 2}, None]])
This is the format of your plot grid: [ (1,1) xaxis1,yaxis1 ] [ (1,2) xaxis2,yaxis2 ] [ (2,1) xaxis3,yaxis3 - ]
>>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=1) Figure(...) >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=2) Figure(...) >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=2, col=1) Figure(...)
Example 4:
>>> # insets >>> fig = make_subplots(insets=[{'cell': (1,1), 'l': 0.7, 'b': 0.3}])
This is the format of your plot grid: [ (1,1) xaxis1,yaxis1 ]
With insets: [ xaxis2,yaxis2 ] over [ (1,1) xaxis1,yaxis1 ]
>>> fig.add_scatter(x=[1,2,3], y=[2,1,1]) Figure(...) >>> fig.add_scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2') Figure(...)
Example 5:
>>> # include subplot titles >>> fig = make_subplots(rows=2, subplot_titles=('Plot 1','Plot 2'))
This is the format of your plot grid: [ (1,1) x1,y1 ] [ (2,1) x2,y2 ]
>>> fig.add_scatter(x=[1,2,3], y=[2,1,2], row=1, col=1) Figure(...) >>> fig.add_bar(x=[1,2,3], y=[2,1,2], row=2, col=1) Figure(...)
Example 6:
Subplot with mixed subplot types
>>> fig = make_subplots(rows=2, cols=2, ... specs=[[{'type': 'xy'}, {'type': 'polar'}], ... [{'type': 'scene'}, {'type': 'ternary'}]])
>>> fig.add_traces( ... [go.Scatter(y=[2, 3, 1]), ... go.Scatterpolar(r=[1, 3, 2], theta=[0, 45, 90]), ... go.Scatter3d(x=[1, 2, 1], y=[2, 3, 1], z=[0, 3, 5]), ... go.Scatterternary(a=[0.1, 0.2, 0.1], ... b=[0.2, 0.3, 0.1], ... c=[0.7, 0.5, 0.8])], ... rows=[1, 1, 2, 2], ... cols=[1, 2, 1, 2]) Figure(...)
