ich diese beiden Beispiele in Bokeh zu kombinieren versuchen:Bokeh: custom Javascript in einem Bild Plot Umsetzung
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
Die Idee scheint einfach. Ich möchte das Bild in der ersten Link angezeigt plotten und dann variieren die Frequenz der Sinusfunktion einen interaktiven Slider mit:
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)
das Diagramm Plots rechts, aber das Bild nie Updates. Das Problem besteht fast sicher, wie ich das Bild am Plotten:
p.image([source.data['d']], x=[0], y=[0], dw=[10], dh=[10], palette="Spectral11")
Ich glaube nicht, das ist, wie man richtig ein Grundstück zu einem Quellobjekt anhängen. Ich gebe gerade ein Array ein, was erklärt, warum das Diagramm nicht aktualisiert wird, wenn sich die Quelle ändert, aber ich bin mir nicht sicher, was die richtige Methode für die Bildfunktion ist. Wenn ich die Anweisung ändere in:
p.image(['d'], x=[0], y=[0], dw=[10], dh=[10], source=source, palette="Spectral11")
Es wird nicht korrekt dargestellt. Ich bin mir nicht sicher, ob das nur ein Syntaxproblem oder ein tiefergehendes Problem ist. Alle Hinweise würden geschätzt werden. Danke im Voraus.
Du bist der Mann. Danke Freund. Ich schätze es sehr. Wenn ich die Fehler sehe, die ich gemacht habe, kann ich viel besser verstehen, was mit den Datenquellen passiert. –