sto cercando di combinare questi due esempi in Bokeh:Bokeh: attuazione javascript personalizzato in una trama immagine
http://bokeh.pydata.org/en/latest/docs/gallery/image.html http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html#customjs-for-widgets
L'idea sembra semplice. Voglio tracciare l'immagine mostrata nel primo link e poi variare la frequenza della funzione seno utilizzando un cursore interattivo:
import numpy as np
from bokeh.plotting import figure, show, output_file
from bokeh.models import CustomJS, ColumnDataSource, Slider
from bokeh.io import vform
N = 10
x = np.linspace(0, 10, N)
y = np.linspace(0, 10, N)
xx, yy = np.meshgrid(x, y)
d = np.sin(xx)*np.cos(yy)
output_file("image.html", title="image.py example")
source = ColumnDataSource(data={'d': d, 'x': x, 'y': y})
p = figure(x_range=[0, 10], y_range=[0, 10])
p.image([source.data['d']], x=[0], y=[0], dw=[10], dh=[10], palette="Spectral11")
callback = CustomJS(args=dict(source=source), code="""
var data = source.get('data');
var f = cb_obj.get('value')
x = data['x']
y = data['y']
d = data['d']
for (i = 0; i < x.length; i++) {
for (i = 0; i < x.length; i++){
d[i][j] = Math.sin(f*x[i])*Math.cos(y[j])
}
source.trigger('change');
""")
slider = Slider(start=0.1, end=4, value=1, step=.1, title="angular frequency", callback=callback)
layout = vform(slider, p)
show(layout)
Le grafico trame giuste, ma l'immagine non aggiorna mai. Il problema quasi certamente esiste come sto tramando l'immagine:
p.image([source.data['d']], x=[0], y=[0], dw=[10], dh=[10], palette="Spectral11")
Non penso che è come si collega correttamente un complotto per un oggetto di origine. Sto solo passando una matrice, il che spiega perché la trama non si aggiorna quando la sorgente cambia, ma non sono sicuro di quale sia il metodo corretto per la funzione immagine. Se cambio la dichiarazione in:
p.image(['d'], x=[0], y=[0], dw=[10], dh=[10], source=source, palette="Spectral11")
Non verrà tracciato correttamente. Non sono sicuro che si tratti solo di un problema di sintassi o di un problema più profondo. Qualsiasi suggerimento sarebbe apprezzato. Grazie in anticipo.
sei l'uomo. Grazie amico. Lo apprezzo molto. Vedere gli errori che ho fatto mi fa capire molto meglio cosa sta succedendo con le fonti di dati. –