On Dec 12, 2015, at 12:17 PM, Bryan Van de Ven <[email protected]> wrote:
Logan,
As an example of how much simpler it is to do this with the new 0.11 server, I only added the following line to the current GH examples/app/sliders.py example:
plot.xaxis.axis_label = "%f, %f, %f, %f" % (a, b, w, k)
And it works great. For reference I have included the full (short) code below. With a 0.11 dev build just run
bokeh server sliders.py --show
Here is the code, as you can see it is much simpler to write (no classes needed just simple functions):
import numpy as np
from bokeh.plotting import Figure
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import HBox, Slider, TextInput, VBoxForm
from bokeh.io import curdoc
# Set up data
N = 200
x = np.linspace(0, 4*np.pi, N)
y = np.sin(x)
source = ColumnDataSource(data=dict(x=x, y=y))
# Set up plot
plot = Figure(plot_height=400, plot_width=400, title="my sine wave",
tools="crosshair,pan,reset,resize,save,wheel_zoom",
x_range=[0, 4*np.pi], y_range=[-2.5, 2.5])
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
# Set up widgets
text = TextInput(title="title", value='my sine wave')
offset = Slider(title="offset", value=0.0, start=-5.0, end=5.0, step=0.1)
amplitude = Slider(title="amplitude", value=1.0, start=-5.0, end=5.0)
phase = Slider(title="phase", value=0.0, start=0.0, end=2*np.pi)
freq = Slider(title="frequency", value=1.0, start=0.1, end=5.1)
# Set up callbacks
def update_title(attrname, old, new):
plot.title = text.value
text.on_change('value', update_title)
def update_data(attrname, old, new):
# Get the current slider values
a = amplitude.value
b = offset.value
w = phase.value
k = freq.value
# Generate the new curve
x = np.linspace(0, 4*np.pi, N)
y = a*np.sin(k*x + w) + b
# THIS IS THE LINE I ADDED TO UPDATE AXIS LABEL
plot.xaxis.axis_label = "%f, %f, %f, %f" % (a, b, w, k)
source.data = dict(x=x, y=y)
for w in [offset, amplitude, phase, freq]:
w.on_change('value', update_data)
# Set up layouts and add to document
inputs = VBoxForm(children=[text, offset, amplitude, phase, freq])
curdoc().add_root(HBox(children=[inputs, plot]))
On Dec 12, 2015, at 12:07 PM, Fabio Pliger <[email protected]> wrote:
Hi Logan,
Would migrating to 0.11 be a feasible possibility for you? The 0.10 server is going to be fully removed. On a longer term view it'd definitely be a better strategy for you and it'd definitely help us building more use cases to test the new (better) server.
Please let us know so we can try to help you to port the example to the 0.11 server (you can install the 0.11 dev build release this week) or to try to debug your use case (that sadly will be limited to the deprecated 0.10 server).
Of course I'd strongly suggest you to migrate to 0.11 if it's possible
Thanks
Fabio
On Sat, Dec 12, 2015 at 8:13 AM, Logan Abel <[email protected]> wrote:
Also, I think it should work to use the sliders example to try to update the plot axis labels, but I couldn't find it on Github as it seemed to have been taken down.
On Friday, December 11, 2015 at 10:54:50 PM UTC-5, Logan Abel wrote:
Hi Sarah,
I am doing something similar to this example:
from bokeh.plotting import figure, output_file, show
output_file("axes.html")
p = figure(plot_width=400, plot_height=400)
p.circle([1,2,3,4,5], [2,5,8,2,7], size=10)
# change just some things about the x-axes
p.xaxis.axis_label = "Temp"
p.xaxis.axis_line_width = 3
p.xaxis.axis_line_color = "red"
# change just some things about the y-axes
p.yaxis.axis_label = "Pressure"
p.yaxis.major_label_text_color = "orange"
p.yaxis.major_label_orientation = "vertical"
# change things on all axes
p.axis.minor_tick_in = -3
p.axis.minor_tick_out = 6
show(p)
From the bokeh example page:
Styling Visual Attributes — Bokeh 0.9.3 documentation
This is doing what I am trying to do, yet it doesn't seem to work with the server.
I am doing exactly what they did except with the server, and the AttributeError seems to be saying that it is a plot object.
It won't work for me to post the code as it is very long and requires a number of system dependencies at the moment for it to run.
Thank you for the help,
Logan
On Friday, December 11, 2015 at 10:26:03 PM UTC-5, Sarah Bird wrote:
I can't run the code as it's not a complete example, but my guess is because `figure` returns a Figure object not a Plot object.
On 12/11/15 7:31 AM, Logan Abel wrote:
I am using 0.10 at the moment.
Here is a more detailed overview of the code:
class PlotApp(HBox):
plot_button = Instance(Button)
plot = Instance(Plot)
@createmethod
def create(cls):
obj = cls()
obj.plot = figure(....)
obj.plot.scatter(....)
obj.plot.xaxis.axis_label = 'test1' #This works
obj.plot_button = Button (....)
obj.inputs = VBox(children=[obj.plot_button, obj.plot])
def setup_events(self):
"""Attaches the on_change event to the value property of the widget.
"""
super(PlotApp, self).setup_events()
self.plot_button.on_click(self.button_clicked)
def button_clicked(self):
self.plot.xaxis.axis_label = 'test2' #Breaks right here
It breaks when the button is clicked with the error
"AttributeError: 'Plot' object has no attribute 'xaxis'"
but the first attempt to set the axis label does work.
On Friday, December 11, 2015 at 2:36:24 AM UTC-5, Sarah Bird wrote:
Maybe others know but i'd need a more complete code example to know.
Also, please let us know if you're using 0.10 or latest 0.11dev build as server has been completely rewritten.
Sent from my iPod
On Dec 10, 2015, at 4:21 PM, Logan Abel <[email protected]> wrote:
Hi all,
I am trying to update a plot axis label (on the bokeh server) with a button click using the following button callback code:
def button_clicked(self):
self.plot.xaxis.axis_label = 'test'
and I get the error:
AttributeError: 'Plot' object has no attribute 'xaxis'
I can update the axis label if I do it in the same function as creating the plot, but not outside of it.
Any thoughts?
Thanks for the help,
Logan
--
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 bokeh+un...@continuum.io.
To post to this group, send email to bo...@continuum.io.
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/43256dc7-7807-4a55-a80c-bf4962ba0930%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
--
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 bokeh+un...@continuum.io.
To post to this group, send email to bo...@continuum.io.
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/46bbcd88-d05b-40a4-8008-603e2b51d45f%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
--
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/bf5ce32b-2d9a-494b-895c-271988e1eed8%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.
--
Fabio Pliger
Senior Software Engineer, Bokeh
--
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/CAPVmnqBcR%2BG5M0qdmtVQTkhmF_AMSAvGc-dFz3bbhs67QyYq%3DQ%40mail.gmail.com\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.