如何在Bokeh中視覺化多線圖,例如洛倫茲吸引子?


Bokeh是一個用於資料視覺化的Python包。它是一個開源專案。Bokeh使用HTML和JavaScript呈現其圖表。這表明它在使用基於Web的儀表板時非常有用。

Bokeh將資料來源轉換為JSON檔案。此檔案用作BokehJS(一個JavaScript庫)的輸入。BokehJS是用TypeScript編寫的,有助於在現代瀏覽器上呈現視覺化效果。

Matplotlib和Seaborn生成靜態圖表,而Bokeh生成互動式圖表。這意味著當用戶與這些圖表互動時,它們會相應地改變。

Bokeh的依賴項:

Numpy
Pillow
Jinja2
Packaging
Pyyaml
Six
Tornado
Python−dateutil

在Windows命令提示符下安裝Bokeh

pip3 install bokeh

在Anaconda提示符下安裝Bokeh

conda install bokeh

以下是程式碼:

示例

import numpy as np
from scipy.integrate import odeint
from bokeh.plotting import figure, output_file, show

sigma = 15
rho = 30
beta = 11/6
theta = 3 * np.pi / 5

def lorenzFun(xyz, t):
   x, y, z = xyz
   x_dot = sigma * (y − x)
   y_dot = x * rho − x * z − y
   z_dot = x * y − beta* z
   return [x_dot, y_dot, z_dot]

initial = (−11, −8, 40)
t = np.arange(0, 1149, 0.05)

solution = odeint(lorenzFun, initial, t)

x = solution[:, 0]
y = solution[:, 1]
z = solution[:, 2]
xprime = np.cos(theta) * x − np.sin(theta) * y
colors = ["#C6DBEF", "#9ECAE1", "#6BAED6", "#4292C6", "#2171B5", "#08306B",]
p = figure(title="Lorenz attractor ", background_fill_color="#fafafa")

p.multi_line(np.array_split(xprime, 6), np.array_split(z, 6),
line_color=colors, line_alpha=0.8, line_width=1.5)
output_file("lorenzplot.html", title="lorenz attractor example")

show(p)

輸出

解釋

  • 匯入併為所需的包指定別名。

  • 呼叫figure函式,並指定繪圖寬度和高度。

  • 定義“lorenzFun”,它給出“x”、“y”和“z”的值。

  • 定義顏色列表,為繪圖著色。

  • 呼叫“output_file”函式以指定將生成的html檔案的名稱。

  • 呼叫Bokeh中的“multi_fun”函式,並傳入資料。

  • 使用“show”函式顯示繪圖。

更新於:2021年1月19日

48 次瀏覽

啟動你的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.