在Bokeh中,可以使用CustomJS回調函數來實現用戶交互后異步加載或更新數據。下面是一個簡單的示例,演示如何在Bokeh中使用CustomJS回調函數來實現異步加載或更新數據:
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, CustomJS
from bokeh.layouts import column
import requests
# 創建一個空的數據源
source = ColumnDataSource(data={'x': [], 'y': []})
# 創建一個圖形對象
plot = figure()
plot.line('x', 'y', source=source)
# 創建一個按鈕
button = Button(label='Load Data')
# 定義點擊按鈕時的回調函數
def load_data():
response = requests.get('https://api.example.com/data')
new_data = response.json()
source.data = new_data
button.on_click(load_data)
# 將按鈕和圖形對象放在一起
layout = column(button, plot)
show(layout)
在這個示例中,我們首先創建了一個空的ColumnDataSource來存儲數據。然后創建了一個圖形對象和一個按鈕。當用戶點擊按鈕時,會觸發load_data函數,該函數會使用requests庫發送一個異步請求來獲取新的數據,然后將新的數據更新到數據源中。最后將按鈕和圖形對象放在一起顯示。
通過這種方式,我們可以在用戶交互后異步加載或更新數據,從而實現更豐富的交互體驗。