import numpy as np
from bqplot import LinearScale, Axis, Boxplot, Figure
# Data for the box plot
x_data = [1, 2, 3, 4]
y_data = [[188.67, 186.91, 187.17, 189.83, 189.64, 190.06, 189.01, 192.31, 191.62, 193.11, 194.00, 193.75, 192.80, 192.96, 191.81, 191.28, 191.72, 191.20, 190.68],
[191.95, 191.56, 192.30, 192.00, 192.25, 192.99, 191.16, 190.41, 191.23, 190.10, 190.07, 189.36, 187.38, 187.88, 191.81, 191.28, 191.72, 189.99, 190.14],
[187.95, 187.34, 187.47, 186.63, 184.30, 185.97, 187.10, 189.64, 189.15, 191.67, 194.00, 194.57, 195.78, 194.40, 195.24, 193.63, 190.85, 192.5, 192.49],
[192.36, 188.49, 189.86, 188.00, 187.70, 188.42, 187.22, 188.04, 188.53, 188.39, 186.35, 181.27, 181.71, 180.37, 180.72, 180.88, 182.14, 181.55, 182.82]
]
# Scales and Axes
sc_x, sc_y = LinearScale(), LinearScale()
ax_x, ax_y = Axis(label="X", scale=sc_x), Axis(label="Y", scale=sc_y, orientation="vertical")
# Boxplot
boxes = Boxplot(
x=x_data, y=y_data, scales={"x": sc_x, "y": sc_y},
box_fill_color="blue", outlier_fill_color="red", stroke="red",
opacities=[0.1, 0.2], box_width=10
)
# Figure
fig = Figure(axes=[ax_x, ax_y], marks=[boxes])
fig