How can I accomplish `set_xlim` or `set_ylim` in Bokeh?

前端 未结 4 1869
小鲜肉
小鲜肉 2020-12-03 06:53

I create a figure in a function, e.g.

import numpy
from bokeh.plotting import figure, show, output_notebook
output_notebook()

def make_fig():
    rows = col         


        
相关标签:
4条回答
  • 2020-12-03 07:18

    As of Bokeh 2.X, it seems it is not possible to replace figure.{x,y}_range with a new instance of Range1d from DataRange1d or vice versa.

    Instead one has to set figure.x_range.start and figure.x_range.end for a dynamic update.

    See https://github.com/bokeh/bokeh/issues/8421 for further details on this issue.

    0 讨论(0)
  • 2020-12-03 07:20

    Maybe a naive solution, but why not passing the lim axis as argument of your function?

    import numpy
    from bokeh.plotting import figure, show, output_notebook
    output_notebook()
    
    def make_fig(rows=16, cols=16,x_range=[0, 16], y_range=[0, 16], plot_width=500, plot_height=500):
        img = numpy.ones((rows, cols), dtype=numpy.uint32)
        view = img.view(dtype=numpy.uint8).reshape((rows, cols, 4))
        view[:, :, 0] = numpy.arange(256)
        view[:, :, 1] = 265 - numpy.arange(256)
        fig = figure(x_range=x_range, y_range=y_range, plot_width=plot_width, plot_height=plot_height)
        fig.image_rgba(image=[img], x=[0], y=[0], dw=[cols], dh=[rows])
        return fig
    
    0 讨论(0)
  • 2020-12-03 07:22

    you can also use it directly

    p = Histogram(wind , xlabel= 'meters/sec', ylabel = 'Density',bins=12,x_range=Range1d(2, 16)) show(p)

    0 讨论(0)
  • 2020-12-03 07:23

    One way is to can things with a simple tuple when creating a figure:

    figure(..., x_range=(left, right), y_range=(bottom, top))
    

    But you can also set the x_range and y_range properties of a created figure directly. (I had been looking for something like set_xlim or set_ylim from matplotlib.)

    from bokeh.models import Range1d
    
    fig = make_fig()
    left, right, bottom, top = 3, 9, 4, 10
    fig.x_range=Range1d(left, right)
    fig.y_range=Range1d(bottom, top)
    show(fig)
    
    0 讨论(0)
提交回复
热议问题