def make_plot2():
from numpy import pi, arange, sin, cos
import numpy as np
from bokeh.objects import (
Plot, DataRange1d, LinearAxis,
ColumnDataSource, GlyphRenderer,
PanTool, PreviewSaveTool)
from bokeh.glyphs import Circle
from bokeh import session
x = arange(-2*pi, 2*pi, 0.1)
y = sin(x)
z = cos(x)
widths = np.ones_like(x) * 0.02
heights = np.ones_like(x) * 0.2
source = ColumnDataSource(data=dict(x=x,y=y,z=z,widths=widths,
heights=heights))
xdr = DataRange1d(sources=[source.columns("x")])
ydr = DataRange1d(sources=[source.columns("y")])
circle = Circle(x="x", y="y", fill="red", radius=5, line_color="black")
glyph_renderer = GlyphRenderer(
data_source = source,
xdata_range = xdr,
ydata_range = ydr,
glyph = circle)
pantool = PanTool(dataranges = [xdr, ydr], dimensions=["width","height"])
previewtool = PreviewSaveTool(dataranges=[xdr,ydr], dimensions=("width","height"))
plot = Plot(x_range=xdr, y_range=ydr, data_sources=[source],
border= 80)
by setting our own name
plot._id = "make_plot"
xaxis = LinearAxis(plot=plot, dimension=0)
yaxis = LinearAxis(plot=plot, dimension=1)
plot.renderers.append(glyph_renderer)
plot.tools = [pantool, previewtool]
sess = session.HTMLFileSession()
sess.add(plot, glyph_renderer, xaxis, yaxis, # xgrid, ygrid,
source, xdr, ydr, pantool, previewtool)
sess.plotcontext.children.append(plot)
sess.plotcontext._dirty = True