最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Bokeh:Python交互式可視化的利器詳解

 更新時間:2025年03月13日 09:22:52   作者:蕭鼎  
這篇文章主要介紹了Bokeh:Python交互式可視化的利器,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1. Bokeh 簡介

Bokeh 是一個專注于 Web 端交互式數(shù)據(jù)可視化的 Python 庫。它基于 JavaScript 的 BokehJS 進行渲染,使得生成的圖表可以直接嵌入 HTML,并支持交互操作。與 Matplotlib、Seaborn 等傳統(tǒng)靜態(tài)繪圖庫相比,Bokeh 在處理大規(guī)模數(shù)據(jù)和交互性方面具有明顯優(yōu)勢。

1.1 為什么選擇 Bokeh

  • 交互性強:支持縮放、平移、懸停提示等交互功能。
  • 高效渲染:利用 WebGL 提高大規(guī)模數(shù)據(jù)集的繪圖性能。
  • 與 Pandas 兼容:可以直接處理 DataFrame 數(shù)據(jù)。
  • 易于嵌入:可將可視化結果嵌入 HTML、Flask、Django 和 Jupyter Notebook。

1.2 安裝與環(huán)境配置

安裝 Bokeh 非常簡單,可以通過 pip 直接安裝:

pip install bokeh

安裝后,可以在 Python 環(huán)境中測試:

from bokeh.plotting import figure, show
from bokeh.io import output_file

output_file("test.html")  # 生成 HTML 文件
p = figure(title="示例圖", x_axis_label="X 軸", y_axis_label="Y 軸")
p.line([1, 2, 3, 4], [10, 20, 30, 40], line_width=2)
show(p)  # 在瀏覽器中顯示圖表

運行代碼后,會在默認瀏覽器中打開一個 HTML 頁面,顯示簡單的折線圖。

2. Bokeh 基礎

Bokeh 的核心概念主要包括:

  • figure:繪圖區(qū)域,用于創(chuàng)建圖表。
  • glyph:可視化圖元,如線、點、柱狀圖等。
  • ColumnDataSource:數(shù)據(jù)源,便于管理數(shù)據(jù)和交互。
  • output_file/output_notebook:指定輸出方式。
  • show/save:顯示或保存圖表。

2.1 創(chuàng)建基本繪圖

Bokeh 提供了多種基礎圖表類型,包括折線圖、散點圖、條形圖等。以下是一些常見示例。

  • 2.1.1 折線圖
from bokeh.plotting import figure, show

p = figure(title="折線圖示例", x_axis_label="X", y_axis_label="Y")
p.line([1, 2, 3, 4, 5], [5, 7, 2, 3, 6], line_width=2, color="blue")
show(p)
  • 2.1.2 散點圖
p = figure(title="散點圖示例", x_axis_label="X", y_axis_label="Y")
p.circle([1, 2, 3, 4, 5], [5, 7, 2, 3, 6], size=10, color="red", alpha=0.5)
show(p)
  • 2.1.3 柱狀圖
from bokeh.io import show
from bokeh.plotting import figure
from bokeh.transform import factor_cmap
from bokeh.models import ColumnDataSource

fruits = ["蘋果", "香蕉", "橙子", "葡萄"]
values = [10, 20, 15, 30]

source = ColumnDataSource(data=dict(fruits=fruits, values=values))
p = figure(x_range=fruits, title="水果銷量", toolbar_location=None, tools="")
p.vbar(x="fruits", top="values", width=0.4, source=source)
show(p)

3. 交互式功能

Bokeh 的一大亮點是交互式可視化,主要通過 HoverTool、TapTool、BoxSelectTool 等工具實現(xiàn)。

3.1 鼠標懸停顯示數(shù)據(jù)

from bokeh.models import HoverTool

p = figure(title="懸停提示示例", x_axis_label="X", y_axis_label="Y")
p.circle([1, 2, 3, 4], [10, 20, 30, 40], size=10, color="navy", alpha=0.5)

hover = HoverTool(tooltips=[("X 軸", "$x"), ("Y 軸", "$y")])
p.add_tools(hover)
show(p)

3.2 選擇和縮放

p = figure(title="選擇和縮放示例", tools="box_select,pan,wheel_zoom,reset")
p.circle([1, 2, 3, 4], [10, 20, 30, 40], size=10, color="green", alpha=0.5)
show(p)

4. 數(shù)據(jù)流處理

Bokeh 支持動態(tài)數(shù)據(jù)更新,適用于實時數(shù)據(jù)可視化,如傳感器數(shù)據(jù)、股票市場數(shù)據(jù)等。

4.1 動態(tài)數(shù)據(jù)更新

from bokeh.models import ColumnDataSource
from bokeh.plotting import figure, curdoc
import numpy as np

source = ColumnDataSource(data=dict(x=[], y=[]))
p = figure(title="動態(tài)數(shù)據(jù)流", x_axis_label="X", y_axis_label="Y")
p.line("x", "y", source=source, line_width=2)

def update():
    new_data = dict(x=[np.random.random()], y=[np.random.random()])
    source.stream(new_data, rollover=50)

curdoc().add_root(p)
curdoc().add_periodic_callback(update, 1000)  # 每秒更新一次

運行該代碼時,Bokeh 服務器會持續(xù)更新數(shù)據(jù),并在瀏覽器中實時展示曲線變化。

5. Bokeh 與 Pandas、Flask/Django 集成

Bokeh 可以與 Pandas 結合處理數(shù)據(jù),并與 Flask 或 Django 進行 Web 應用集成。

5.1 Bokeh + Pandas

import pandas as pd
data = pd.DataFrame({"x": [1, 2, 3, 4], "y": [10, 20, 30, 40]})
source = ColumnDataSource(data)

p = figure(title="Pandas 數(shù)據(jù)繪圖")
p.line("x", "y", source=source, line_width=2)
show(p)

5.2 Bokeh + Flask

from flask import Flask, render_template
from bokeh.embed import components

app = Flask(__name__)

@app.route("/")
def index():
    p = figure(title="Flask 集成示例")
    p.line([1, 2, 3, 4], [10, 20, 30, 40])
    script, div = components(p)
    return render_template("index.html", script=script, div=div)

if __name__ == "__main__":
    app.run(debug=True)

6. 總結

Bokeh 是 Python 生態(tài)中最強大的交互式可視化工具之一,適用于大規(guī)模數(shù)據(jù)、Web 嵌入和動態(tài)數(shù)據(jù)流可視化。

它的靈活性、易用性和強大的交互能力,使其成為數(shù)據(jù)科學、金融分析、物聯(lián)網(wǎng)數(shù)據(jù)可視化的理想選擇。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python比較配置文件的方法實例詳解

    Python比較配置文件的方法實例詳解

    工作中最常見的配置文件有四種:普通key=value的配置文件、Json格式的配置文件、HTML格式的配置文件以及YMAML配置文件。這篇文章主要介紹了Python比較配置文件的方法 ,需要的朋友可以參考下
    2019-06-06
  • wxpython學習筆記(推薦查看)

    wxpython學習筆記(推薦查看)

    wxPython是Python編程語言的一個GUI工具箱。他使得Python程序員能夠輕松的創(chuàng)建具有健壯、功能強大的圖形用戶界面的程序
    2014-06-06
  • Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務器

    Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務器

    這篇文章主要為大家介紹了Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • pytorch如何使用訓練好的模型預測新數(shù)據(jù)

    pytorch如何使用訓練好的模型預測新數(shù)據(jù)

    這篇文章主要介紹了pytorch如何使用訓練好的模型預測新數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • django框架模型層功能、組成與用法分析

    django框架模型層功能、組成與用法分析

    這篇文章主要介紹了django框架模型層功能、組成與用法,結合實例形式簡單分析了Django框架中模型層的基本概念、原理、常用組件構成與相關操作技巧,需要的朋友可以參考下
    2019-07-07
  • Python使用Selenium實現(xiàn)Web自動化的完整指南

    Python使用Selenium實現(xiàn)Web自動化的完整指南

    Selenium?是一個強大的開源?Web?自動化工具集,本文將作為一份面向完全新手的系統(tǒng)性指南,帶你一步步了解什么是?Selenium,以及如何使用?Python?編寫你的第一個?Web?自動化腳本
    2026-03-03
  • python求平均數(shù)、方差、中位數(shù)的例子

    python求平均數(shù)、方差、中位數(shù)的例子

    今天小編就為大家分享一篇python求平均數(shù)、方差、中位數(shù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 一文理解Python命名機制

    一文理解Python命名機制

    這篇文章主要介紹的是Python的命名機制,文章回先提出問題,然后根據(jù)問題逐步解析,感興趣的小伙伴可以參考一下,希望對你有所幫助
    2021-10-10
  • python如何讀寫csv數(shù)據(jù)

    python如何讀寫csv數(shù)據(jù)

    這篇文章主要為大家詳細介紹了python如何讀寫csv數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python 根據(jù)網(wǎng)易云歌曲的ID 直接下載歌曲的實例

    python 根據(jù)網(wǎng)易云歌曲的ID 直接下載歌曲的實例

    今天小編就為大家分享一篇python 根據(jù)網(wǎng)易云歌曲的ID 直接下載歌曲的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論

江山市| 周口市| 长武县| 庐江县| 红河县| 绍兴市| 桐柏县| 宽甸| 祁东县| 肃南| 内江市| 和平区| 志丹县| 晋中市| 宣汉县| 措勤县| 阿拉尔市| 焦作市| 普陀区| 彭阳县| 措勤县| 张掖市| 吉木萨尔县| 台前县| 彭阳县| 西乌| 闽侯县| 马公市| 岳西县| 邵武市| 丹凤县| 新疆| 丁青县| 唐海县| 张家港市| 德江县| 耿马| 金昌市| 瓮安县| 滦南县| 宜兰县|