1

I'm running the code from the top answer to this question in an IPython/Jupyter notebook. The first time I run it, it displays properly:

enter image description here

If I change any parameter, no matter how inconsequential (e.g. a single quote to a double quote), when I run the cell again, or when I run the same code in another cell, the following appears:

enter image description here

It looks like it's recursively putting the desired 2x1 grid of subplots inside a new 2x1 grid of subplots. I tried adding bk_plotting.reset_output(), but it had no effect.

Here's the cell code:

import numpy as np
import bokeh.plotting as bk_plotting
import bokeh.models as bk_models

# for the ipython notebook
bk_plotting.output_notebook()

# a random dataset
data = bk_models.ColumnDataSource(data=dict(x=np.arange(10),
                                            y1=np.random.randn(10),
                                            y2=np.random.randn(10)))

# defining the range (I tried with start and end instead of sources and couldn't make it work)
x_range = bk_models.DataRange1d(sources=[data.columns('x')])
y_range = bk_models.DataRange1d(sources=[data.columns('y1', 'y2')])

# create the first plot, and add a the line plot of the column y1
p1 = bk_models.Plot(x_range=x_range,
                    y_range=y_range,
                    title="",
                    min_border=2,
                    plot_width=250,
                    plot_height=250)
p1.add_glyph(data,
             bk_models.glyphs.Line(x='x',
                                   y='y1',
                                   line_color='black',
                                   line_width=2))

# add the axes
xaxis = bk_models.LinearAxis()
p1.add_layout(xaxis, 'below')
yaxis = bk_models.LinearAxis()
p1.add_layout(yaxis, 'left')

# add the grid
p1.add_layout(bk_models.Grid(dimension=1, ticker=xaxis.ticker))
p1.add_layout(bk_models.Grid(dimension=0, ticker=yaxis.ticker))

# add the tools
p1.add_tools(bk_models.PreviewSaveTool())

# create the second plot, and add a the line plot of the column y2
p2 = bk_models.Plot(x_range=x_range,
                    y_range=y_range,
                    title="",
                    min_border=2,
                    plot_width=250,
                    plot_height=250)
p2.add_glyph(data,
             bk_models.glyphs.Line(x='x',
                                   y='y2',
                                   line_color='black',
                                   line_width=2))



# add the x axis
xaxis = bk_models.LinearAxis()
p2.add_layout(xaxis, 'below')

# add the grid
p2.add_layout(bk_models.Grid(dimension=1, ticker=xaxis.ticker))
p2.add_layout(bk_models.Grid(dimension=0, ticker=yaxis.ticker))

# add the tools again (it's only displayed if added to each chart)
p2.add_tools(bk_models.PreviewSaveTool())

# display both
gp = bk_plotting.GridPlot(children=[[p1, p2]])
bk_plotting.show(gp)
Community
  • 1
  • 1
prooffreader
  • 2,333
  • 4
  • 21
  • 32

1 Answers1

1

It is important to specify versions in reports such as this. This bug was noted in this GitHub issue (detailed comment), with a fix recorded as being in put in place in this Pull Request before the 0.8.2 release. I cannot reproduce the problem in a clean Bokeh 0.8.2 conda environent (python3, jupiter/ipython 3.10, OSX+safari) with the code above. If you can still reproduce this problem with Bokeh >= 0.8.2, please file a bug report on Bokeh issue tracker with as much information above versions, platform, etc. as possible.

bigreddot
  • 33,642
  • 5
  • 69
  • 122