我想繪製一個可以指定範圍的正態分佈。我需要將其作爲html返回。我使用this example的一些代碼。我需要做什麼使回調工作?現在,當我在瀏覽器中查看開發人員工具時,出現list not defined
錯誤。使用回調/小部件繪製正態分佈來指定範圍
import numpy as np
import scipy.stats
from bokeh.layouts import column
from bokeh.models import CustomJS, Slider
from bokeh.plotting import figure, output_file, show, ColumnDataSource
output_file("slider2.html")
N = 500;a = 0;b = 1
x = list(np.linspace(a, b, N))
z = list(scipy.stats.norm.pdf(x,abs(b-a)/2,abs(b-a)/6))
source = ColumnDataSource(data=dict(x=x,z=z))
plot = figure(plot_width=400, plot_height=400)
plot.line('x', 'z', source=source, line_width=2, line_alpha=0.3)
callback = CustomJS(args=dict(source=source), code="""
var d2 = source.get('data');
var b = cb_obj.get('value')
d2['x'] = list(np.linspace(a, b, N))
d2['z'] = scipy.stats.norm.pdf(x,abs(b-a)/2,abs(b-a)/6);
source.change.emit();
""")
slider = Slider(start=1, end=10, value=1, step=.1, title="upper limit", callback=callback)
layout = column(slider, plot)
show(layout)
CustomJS代碼必須用純Javascript編寫。你已經在這裏使用了python函數,所以這就是爲什麼控制檯日誌說沒有定義列表。您可以純粹編寫python回調函數,但那些需要使用散景服務器。 – Anthonydouc
好的問題似乎是[使用numpy和熊貓](https://stackoverflow.com/questions/39111369/bokeh-web-server-app-at-localhost-to-html-file/39111847#39111847)在回調函數中。鏈接示例中的'Math.sin()'函數來自javascript – 5th
正確,pandas和numpy是python庫,不知道javascript。回答你自己的問題是很好的。 – Anthonydouc