☰Read-only archive⌕
Looking for help with Bokeh?

This is a read-only archive. Ask questions and join the conversation on GitHub.

Visit Community Support on GitHub →
Archived discussions · Captured October 28, 2026

Common axis for multiple plots

Community Support
optisium
optisium

I have a set of plots in a grid that have similar y-axis. I want to get ride of the individual y-axes and have one common axis for all the plots.

I tried making “p.yaxis.visible = False” in all but one plot, but that makes the plot area small in the plot with the axis. Ideally, I would like to be able to add in a new figure with just axes and have the other three without axis.

Here’s an example of what I’m trying to do.

from bokeh.layouts import gridplot
from numpy import arange, linspace, pi, sin, cos
from bokeh.models import LinearAxis, Range1d
from bokeh.plotting import figure, output_file, show

x = arange(-2pi, 2pi, 0.1)

y11 = sin(x)
y12 = linspace(0, 100, len(y11))

y21 = cos(x)
y22 = linspace(100, 0, len(y11))

y31 = sin(x*2)
y32 = linspace(0, 10, len(y11))**2

def createCombinedPlot(x, y1, y2):

p = figure(x_range=(-6.5, 6.5), y_range=(-1.1, 1.1),
           plot_width=300, plot_height=200)

p.circle(x, y1, color="red")
p.extra_y_ranges = {"foo": Range1d(start=0, end=100)}
p.circle(x, y2, color="blue", y_range_name="foo")
p.add_layout(LinearAxis(y_range_name="foo"), 'left')

return p

plot_list = [createCombinedPlot(x, y1, y2) for x, y1, y2 in ((x, y11, y12), (x, y21, y22), (x, y31, y32))]

output_file(“twin_axis_modified.html”)

show(gridplot(plot_list, ncols=2))

⌁   Link to post

End of archived discussion · Replies are disabled