
- Bokeh 教程
- Bokeh - 首頁
- Bokeh - 簡介
- Bokeh - 環境設定
- Bokeh - 入門
- Bokeh - Jupyter Notebook
- Bokeh - 基本概念
- Bokeh - 使用 Glyphs 繪製圖形
- Bokeh - 面積圖
- Bokeh - 圓形 Glyph
- Bokeh - 矩形、橢圓和多邊形
- Bokeh - 扇形和弧形
- Bokeh - 專用曲線
- Bokeh - 設定範圍
- Bokeh - 座標軸
- Bokeh - 註釋和圖例
- Bokeh - Pandas
- Bokeh - ColumnDataSource
- Bokeh - 過濾資料
- Bokeh - 佈局
- Bokeh - 繪圖工具
- Bokeh - 樣式化視覺屬性
- Bokeh - 自定義圖例
- Bokeh - 新增小部件
- Bokeh - 伺服器
- Bokeh - 使用 Bokeh 子命令
- Bokeh - 匯出圖形
- Bokeh - 嵌入圖形和應用
- Bokeh - 擴充套件 Bokeh
- Bokeh - WebGL
- Bokeh - 使用 JavaScript 開發
- Bokeh 有用資源
- Bokeh - 快速指南
- Bokeh - 有用資源
- Bokeh - 討論
Bokeh - 伺服器
Bokeh 架構採用解耦設計,其中圖形和 Glyph 等物件使用 Python 建立,並轉換為 JSON 格式供**BokehJS 客戶端庫**使用。
但是,藉助**Bokeh Server**,可以使 Python 和瀏覽器中的物件保持同步。它能夠使用 Python 的全部功能來響應瀏覽器中生成的 UI 事件。它還有助於自動將伺服器端更新推送到瀏覽器中的小部件或圖形。
Bokeh 伺服器使用用 Python 編寫的應用程式程式碼來建立 Bokeh 文件。來自客戶端瀏覽器的每個新連線都會導致 Bokeh 伺服器為該會話建立一個新的文件。

首先,我們必須開發一個要提供給客戶端瀏覽器的應用程式程式碼。以下程式碼呈現了一個正弦波線 Glyph。除了圖形之外,還會呈現一個滑塊控制元件來控制正弦波的頻率。回撥函式**update_data()**更新**ColumnDataSource**資料,將滑塊的瞬時值作為當前頻率。
import numpy as np from bokeh.io import curdoc from bokeh.layouts import row, column from bokeh.models import ColumnDataSource from bokeh.models.widgets import Slider, TextInput from bokeh.plotting import figure N = 200 x = np.linspace(0, 4*np.pi, N) y = np.sin(x) source = ColumnDataSource(data = dict(x = x, y = y)) plot = figure(plot_height = 400, plot_width = 400, title = "sine wave") plot.line('x', 'y', source = source, line_width = 3, line_alpha = 0.6) freq = Slider(title = "frequency", value = 1.0, start = 0.1, end = 5.1, step = 0.1) def update_data(attrname, old, new): a = 1 b = 0 w = 0 k = freq.value x = np.linspace(0, 4*np.pi, N) y = a*np.sin(k*x + w) + b source.data = dict(x = x, y = y) freq.on_change('value', update_data) curdoc().add_root(row(freq, plot, width = 500)) curdoc().title = "Sliders"
接下來,透過以下命令列啟動 Bokeh 伺服器:
Bokeh serve –show sliders.py
Bokeh 伺服器開始執行並在 localhost:5006/sliders 上提供應用程式服務。控制檯日誌顯示以下內容:
C:\Users\User>bokeh serve --show scripts\sliders.py 2019-09-29 00:21:35,855 Starting Bokeh server version 1.3.4 (running on Tornado 6.0.3) 2019-09-29 00:21:35,875 Bokeh app running at: https://:5006/sliders 2019-09-29 00:21:35,875 Starting Bokeh server with process id: 3776 2019-09-29 00:21:37,330 200 GET /sliders (::1) 699.99ms 2019-09-29 00:21:38,033 101 GET /sliders/ws?bokeh-protocol-version=1.0&bokeh-session-id=VDxLKOzI5Ppl9kDvEMRzZgDVyqnXzvDWsAO21bRCKRZZ (::1) 4.00ms 2019-09-29 00:21:38,045 WebSocket connection opened 2019-09-29 00:21:38,049 ServerConnection created
開啟您喜歡的瀏覽器並輸入上述地址。正弦波圖形將顯示如下:

您可以嘗試將頻率更改為 2,方法是滾動滑塊。

廣告