I’m currently creating a figure and serving it over bokeh server. I want to be able to interactively update the axis range when I load a new data set. I can accomplish this by changing the x_range.end value (for example), but when I do this, the plot’s ResetTool will reset the axis range to the original value. What do I need to do to accomplish this? ResetTool doesn’t seem to have any default axis range values associated with it, but I’m sure they must be stored somewhere.
Below is a simplified version of what I want to accomplish. If we serve this via bokeh_server, and click on the ‘zoom’ button, I would like the ResetTool to leave the new axis ranges alone.
The current ResetTool only ever resets a plot to its original bounds, which are recorded internally on the BokehJS side when the plot is initially displayed. Making it do something different would require new development (please open a feature request on GH if you are inclined). Alternatively you can make a custom extension to do something different, see the user guide for more information about extending Bokeh:
I'm currently creating a figure and serving it over bokeh server. I want to be able to interactively update the axis range when I load a new data set. I can accomplish this by changing the x_range.end value (for example), but when I do this, the plot's ResetTool will reset the axis range to the original value. What do I need to do to accomplish this? ResetTool doesn't seem to have any default axis range values associated with it, but I'm sure they must be stored somewhere.
Below is a simplified version of what I want to accomplish. If we serve this via bokeh_server, and click on the 'zoom' button, I would like the ResetTool to leave the new axis ranges alone.
from bokeh.plotting import figure, curdoc
from bokeh.models import Button
from bokeh.layouts import column
def zoom():
p.x_range.end *= 1.2
p.y_range.end *=1.2
p = figure(plot_width=300, plot_height=300,
x_range=[0,5], y_range=[0,5])
Thanks for confirming that this is not possible. I opened a github issue. Writing extensions is beyond me, unfortunately (I use bokeh so I don’t have to learn JavaScript!).
For the sake of anyone else who comes across this question, I was able to implement an acceptable workaround by creating a Button labeled “Reset plot zoom” that sets the plot’s axis ranges to a default value that is defined from the plot’s data_source. If I then hide the ResetTool, that does the trick in a pinch.
···
On Fri, Nov 4, 2016 at 11:02 AM, Bryan Van de Ven [email protected] wrote:
The current ResetTool only ever resets a plot to its original bounds, which are recorded internally on the BokehJS side when the plot is initially displayed. Making it do something different would require new development (please open a feature request on GH if you are inclined). Alternatively you can make a custom extension to do something different, see the user guide for more information about extending Bokeh:
I’m currently creating a figure and serving it over bokeh server. I want to be able to interactively update the axis range when I load a new data set. I can accomplish this by changing the x_range.end value (for example), but when I do this, the plot’s ResetTool will reset the axis range to the original value. What do I need to do to accomplish this? ResetTool doesn’t seem to have any default axis range values associated with it, but I’m sure they must be stored somewhere.
Below is a simplified version of what I want to accomplish. If we serve this via bokeh_server, and click on the ‘zoom’ button, I would like the ResetTool to leave the new axis ranges alone.
from bokeh.plotting import figure, curdoc
from bokeh.models import Button
from bokeh.layouts import column
def zoom():
p.x_range.end *= 1.2
p.y_range.end *=1.2
p = figure(plot_width=300, plot_height=300,
x_range=[0,5], y_range=[0,5])
p.circle(x=range(11), y=range(11))
b = Button(label=‘zoom out’)
b.on_click(zoom)
curdoc().add_root(column([p,b]))
–
You received this message because you are subscribed to the Google Groups “Bokeh Discussion - Public” group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
Thanks for confirming that this is not possible. I opened a github issue. Writing extensions is beyond me, unfortunately (I use bokeh so I don't have to learn JavaScript!).
I understand the sentiment. It's definitely on the roadmap to make extensions easily shareable and discoverable, so that the contributions of a few extension writers can be magnified across the entire community. This is really necessary to keep the core library to a maintainable size.
For the sake of anyone else who comes across this question, I was able to implement an acceptable workaround by creating a Button labeled "Reset plot zoom" that sets the plot's axis ranges to a default value that is defined from the plot's data_source. If I then hide the ResetTool, that does the trick in a pinch.
A button callback seems like a perfectly reasonable solution for now, glad it worked out.
Thanks,
Bryan
···
On Fri, Nov 4, 2016 at 11:02 AM, Bryan Van de Ven <[email protected]> wrote:
The current ResetTool only ever resets a plot to its original bounds, which are recorded internally on the BokehJS side when the plot is initially displayed. Making it do something different would require new development (please open a feature request on GH if you are inclined). Alternatively you can make a custom extension to do something different, see the user guide for more information about extending Bokeh:
> On Nov 2, 2016, at 2:26 PM, Brian Gerke <[email protected]> wrote:
>
>
> I'm currently creating a figure and serving it over bokeh server. I want to be able to interactively update the axis range when I load a new data set. I can accomplish this by changing the x_range.end value (for example), but when I do this, the plot's ResetTool will reset the axis range to the original value. What do I need to do to accomplish this? ResetTool doesn't seem to have any default axis range values associated with it, but I'm sure they must be stored somewhere.
>
> Below is a simplified version of what I want to accomplish. If we serve this via bokeh_server, and click on the 'zoom' button, I would like the ResetTool to leave the new axis ranges alone.
>
> from bokeh.plotting import figure, curdoc
> from bokeh.models import Button
> from bokeh.layouts import column
>
> def zoom():
>
> p.x_range.end *= 1.2
> p.y_range.end *=1.2
>
>
> p = figure(plot_width=300, plot_height=300,
> x_range=[0,5], y_range=[0,5])
>
> p.circle(x=range(11), y=range(11))
>
> b = Button(label='zoom out')
> b.on_click(zoom)
>
>
> curdoc().add_root(column([p,b]))
>
>
>
> --
> You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/5ea5c82a-3aac-4978-8ac3-660a87f8d528%40continuum.io\.
> For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
--
Brian F. Gerke, Ph.D.
Principal Scientific Engineering Associate
Energy Efficiency Standards Group
Lawrence Berkeley National Lab
510-486-5973 | ees.lbl.gov