First steps 6: Combining plots#
In the previous first steps guides, you created individual plots.
In this section, you will combine several plots into different kinds of layouts.
Creating rows, columns, and grids#
The easiest way to combine individual plots is to assign them to rows or columns.
For example:
To combine several plots into a horizontal row layout, you first need to import
row
. Then use the row()
function when calling
show()
:
from bokeh.layouts import row
from bokeh.plotting import figure, show
# prepare some data
x = list(range(11))
y0 = x
y1 = [10 - i for i in x]
y2 = [abs(i - 5) for i in x]
# create three plots with one renderer each
s1 = figure(width=250, height=250, background_fill_color="#fafafa")
s1.scatter(x, y0, marker="circle", size=12, color="#53777a", alpha=0.8)
s2 = figure(width=250, height=250, background_fill_color="#fafafa")
s2.scatter(x, y1, marker="triangle", size=12, color="#c02942", alpha=0.8)
s3 = figure(width=250, height=250, background_fill_color="#fafafa")
s3.scatter(x, y2, marker="square", size=12, color="#d95b43", alpha=0.8)
# put the results in a row and show
show(row(s1, s2, s3))
To display several plots in a vertical column layout, use the
column()
function instead.
A more flexible way to arrange elements in Bokeh is to use the
gridplot()
function.
See also
For more information on row()
, column()
, and gridplot()
, see
Grids and layouts in the user guide.
Defining sizing behavior#
You can use the functions row()
, column()
, and gridplot()
with
additional arguments to define how Bokeh scales the individual plots. See
sizing_mode
for a list of all sizing
modes that Bokeh supports.
For example: To make all plots in a row responsively fill the available width
of the browser window, assign scale_width
to sizing_mode
:
from bokeh.layouts import row
from bokeh.plotting import figure, show
# prepare some data
x = list(range(11))
y0 = x
y1 = [10 - i for i in x]
y2 = [abs(i - 5) for i in x]
# create three plots with one renderer each
s1 = figure(width=250, height=250, background_fill_color="#fafafa")
s1.scatter(x, y0, marker="circle", size=12, color="#53777a", alpha=0.8)
s2 = figure(width=250, height=250, background_fill_color="#fafafa")
s2.scatter(x, y1, marker="triangle", size=12, color="#c02942", alpha=0.8)
s3 = figure(width=250, height=250, background_fill_color="#fafafa")
s3.scatter(x, y2, marker="square", size=12, color="#d95b43", alpha=0.8)
# put the results in a row that automatically adjusts
# to the browser window's width
show(row(children=[s1, s2, s3], sizing_mode="scale_width"))
See also
For more information on sizing modes, see Sizing modes in the user guide.