Python Bokeh是一個(gè)用于現(xiàn)代web瀏覽器的交互式可視化庫(kù)朴乖。它提供了優(yōu)雅祖屏、簡(jiǎn)潔的通用圖形結(jié)構(gòu),并在大型或流式數(shù)據(jù)集上提供高性能的交互性寒砖。Bokeh可以快速輕松地制作交互式繪圖赐劣、儀表板嫉拐。
Bokeh概念
先對(duì)Bokeh的基本的概念進(jìn)行說(shuō)明哩都。在對(duì)基本概念有一定的印象后再對(duì)使用Bokeh的基礎(chǔ)流程進(jìn)行介紹。
概念 | 說(shuō)明 |
---|---|
Plot | Bokeh中的核心概念婉徘,容納所有對(duì)象(渲染器漠嵌、向?qū)Ц拦?shù)據(jù)和工具)的容器,容器中的不同對(duì)象組合成最終的可視化儒鹿。在bokeh.plotting接口提供figure函數(shù)能進(jìn)入到各種不同的的對(duì)象中 |
Glyphs | 是Bokeh可以顯示的基本視覺(jué)標(biāo)記化撕,為了方便開(kāi)發(fā)而在較高層級(jí)的接口。其底層接口為bokeh.models约炎,可以進(jìn)行完全的控制繪制 |
Guides | 幫助用戶判斷距離植阴、角度等的視覺(jué)輔助工具。包括網(wǎng)格線或波段圾浅、軸(如線性掠手、日志或datetime) |
Annotations | 視覺(jué)輔助工具,標(biāo)簽或名稱的部分。這些包括標(biāo)題狸捕、說(shuō)明等 |
Ranges | 用來(lái)描述了一個(gè)Plot的數(shù)據(jù)空間界限 |
Resources | 要生成Plot,客戶庫(kù)BokehJS JavaScript和CSS代碼必須加載到瀏覽器中 |
Application | 用于生成Bokeh文檔的具體對(duì)象喷鸽,通常在Bokeh創(chuàng)建一個(gè)連接一個(gè)新的回話是創(chuàng)建 |
BokehJS | JavaScript實(shí)現(xiàn)Web前端的可視化功能,在瀏覽器中處理Bokeh圖和小部件的UI交互 |
Documents | 為Bokeh應(yīng)用程序組織數(shù)據(jù)結(jié)構(gòu)灸拍,呈現(xiàn)交互式可視化或應(yīng)用程序所需的所有Bokeh模型和數(shù)據(jù) |
Embedding | 嵌入操作做祝,將Bokeh可視化對(duì)象和窗口部件嵌入到Web應(yīng)用或IPthon notebook中 |
Models | 是包含Bokeh場(chǎng)景最下層的對(duì)象,通過(guò)bokeh.models接口調(diào)用鸡岗。一般情況下混槐,不會(huì)直接使用 |
Server | 可以用于共享和發(fā)布Bokeh圖和應(yīng)用程序,用于處理大型數(shù)據(jù)集的流媒體,或者支持基于小部件和選擇的復(fù)雜的用戶交互 |
Widgets | 在Bokeh圖之外的用戶界面元素,如滑塊、下拉菜單轩性、按鈕等纵隔。事件和小部件的更新可以通知額外的計(jì)算,或者導(dǎo)致Bokeh的情節(jié)更新 |
Bokeh使用步驟
這里說(shuō)明的使用步驟,實(shí)際是對(duì)bokeh.plotting接口的使用炮姨。也是在絕大數(shù)情況下的操作步驟捌刮。
數(shù)據(jù)的準(zhǔn)備
對(duì)于數(shù)據(jù)源可以是Python的列表數(shù)據(jù)類型,也可以可以是Numpy array和Pandas Series類型舒岸。設(shè)置輸出文件
可以使用output_file()函數(shù)將結(jié)果輸出到html文件中绅作,使用output_notebook()函數(shù)將結(jié)果內(nèi)容輸出到Jupyter notebooks文件中調(diào)用figure()函數(shù)
這將創(chuàng)建一個(gè)默認(rèn)選項(xiàng)的Plot,并可以輕松定制標(biāo)題蛾派、工具和軸標(biāo)簽俄认。用Glyphs渲染數(shù)據(jù)
使用不同的Glyphs,繪制數(shù)據(jù)『檎В可指定可視化自定義眯杏,如顏色、圖例和寬度顯示保存結(jié)果
使用show()和save()函數(shù)那些對(duì)結(jié)果展示和保存壳澳。
核心模塊
主要有兩個(gè)核心的模塊構(gòu)成岂贩,分別是BokehJS JavaScript庫(kù)和bokeh.models Python庫(kù)。
關(guān)于BokehJS JavaScript庫(kù)巷波。
在瀏覽器中執(zhí)行萎津,負(fù)責(zé)所有的呈現(xiàn)和用戶交互卸伞。接收一個(gè)聲明性JSON對(duì)象集合,其中包含一要繪制的場(chǎng)景說(shuō)明锉屈。
在接收的JSON中的對(duì)象數(shù)據(jù)將會(huì)轉(zhuǎn)換為BokehJS中模型荤傲,并在瀏覽器上顯示。對(duì)于這個(gè)JSON數(shù)據(jù)文件有Bokeh Ptyhon代碼生成颈渊。關(guān)于bokeh.models Python庫(kù)遂黍。
在Python Bokeh中通過(guò)相關(guān)的類,用于生成供BokehJS使用的JSON數(shù)據(jù)俊嗽。這些Python Bokeh知道如何生成模型的
數(shù)據(jù)和屬性妓湘,并序列化為JSON格式。這些功能可以在較為底層中的bokeh.models接口中找到乌询。
示例
from bokeh.plotting import figure, output_file, show
# 準(zhǔn)備要繪制的數(shù)據(jù)
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]
# 以靜態(tài)網(wǎng)頁(yè)方式輸出可視化結(jié)果
output_file("1-lines.html")
# 創(chuàng)建一個(gè)包含標(biāo)題和x,y說(shuō)明的新的plot
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')
# 繪制線段
p.line(x, y, legend="Temp.", line_width=2)
# 展示結(jié)果
show(p)
輸出的結(jié)果為html文件榜贴,其中html中的展示的結(jié)果如下: