anscombe (original) (raw)

A reproduction of Anscombe’s Quartet using the low-level bokeh.modelsAPI that also includes HTML content in a Div.

Details

Sampledata:

bokeh.sampledata.anscombe

Bokeh APIs:

bokeh.layouts.column, bokeh.layouts.gridplot, bokeh.models.Plot, bokeh.models.LinearAxis

More info:

Grid layout for plots

Keywords:

column, gridplot

import numpy as np

from bokeh.io import show from bokeh.layouts import column, gridplot from bokeh.models import (ColumnDataSource, Div, Grid, Line, LinearAxis, Plot, Range1d, Scatter) from bokeh.sampledata.anscombe import data as df

circle_source = ColumnDataSource(data=df)

x = np.linspace(-0.5, 20.5, 10) y = 3 + 0.5 * x line_source = ColumnDataSource(data=dict(x=x, y=y))

rng = Range1d(start=-0.5, end=20.5)

def make_plot(title, xname, yname): plot = Plot(x_range=rng, y_range=rng, width=400, height=400, background_fill_color='#efefef') plot.title.text = title

xaxis = LinearAxis(axis_line_color=None)
plot.add_layout(xaxis, 'below')

yaxis = LinearAxis(axis_line_color=None)
plot.add_layout(yaxis, 'left')

plot.add_layout(Grid(dimension=0, ticker=xaxis.ticker))
plot.add_layout(Grid(dimension=1, ticker=yaxis.ticker))

line = Line(x='x', y='y', line_color="#666699", line_width=2)
plot.add_glyph(line_source, line)

circle = Scatter(x=xname, y=yname, size=12, line_color="#cc6633",
                 fill_color="#cc6633",  fill_alpha=0.5)
plot.add_glyph(circle_source, circle)

return plot

#where will this comment show up I = make_plot('I', 'Ix', 'Iy') II = make_plot('II', 'IIx', 'IIy') III = make_plot('III', 'IIIx', 'IIIy') IV = make_plot('IV', 'IVx', 'IVy')

grid = gridplot([[I, II], [III, IV]], toolbar_location=None)

div = Div(text="""

Anscombe's Quartet

Anscombe's Quartet is a collection of four small datasets that have nearly identical simple descriptive statistics (mean, variance, correlation, and linear regression lines), yet appear very different when graphed.

""")

show(column(div, grid, sizing_mode="scale_width"))