Рубрики
Без рубрики

Учебник визуализации данных Python Bokeh

Библиотека визуализации данных Python Bokeh используется для создания графов из точек данных. Мы можем создавать HTML-файл или график графика, Bokeh требует Numpy Module

Автор оригинала: Pankaj Kumar.

Боке является интерактивной библиотекой визуализации данных Python, которая нацелена на современные веб-браузеры для презентации.

Библиотека Python Bokeh направлена на предоставление высокопроизводительной интерактивности с краткой конструкцией новой графики на очень большие или даже потоковые наборы данных быстрым, легким способом и элегантным способом.

1. Библиотека Python Bokeh

Bokeh предлагает простые, гибкие и мощные функции и обеспечивает два уровня интерфейса:

  • Bokeh.models : Интерфейс низкого уровня, который обеспечивает разработчики приложений с большинством гибкости.
  • Bokeh.plotting : Интерфейс более высокого уровня для создания визуальных глифов.

2. Боке зависимости

Перед началом Bokeh нам нужно иметь Numpy установлен на нашей машине.

3. Установка модуля Bokeh

Самый простой способ установки Bokeh и его зависимости заключается в использовании CODA или PIP.

Чтобы установить с помощью CODNA Откройте терминал и запустите следующую команду:

sudo conda install bokeh

Чтобы установить использование PIP Откройте терминал и запустите следующую команду:

sudo pip install bokeh

4. Проверка установки модуля Bokeh

Мы можем проверить, что Bokeh правильно устанавливается или не используя некоторые команды. Но вместо этого мы сделаем очень маленькую программу для предоставления результата Bokeh, чтобы убедиться, что он работает должным образом.

from bokeh.plotting import figure, output_file, show

output_file("test.html")
plot = figure()
plot.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width=2)
show(plot)

Это должно создать файл с именем test.html Локально открыть этот файл в браузере и посмотрите такие результаты: Обратите внимание, как мы смогли создать график, просто используя очень мало строк кода.

5. Примеры Python Bokeh

Теперь, когда мы проверили установку Bokeh, мы можем начать с примерами графов и участков.

5.1) Построение простого линейного графа

Построение простых линейных графиков вполне похоже на то, что мы сделали для проверки, но мы собираемся добавить несколько деталей, чтобы сюжет был легко читать. Давайте посмотрим на фрагмент кода:

from bokeh.plotting import figure, output_file, show

# prepare some data
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# output to static HTML file
output_file("lines.html")

# create a new plot with a title and axis labels
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')

# add a line renderer with legend and line thickness
p.line(x, y, legend="Temp.", line_width=2)

# show the results
show(p)

Давайте посмотрим на вывод этой программы: С Рисунок () Функция и ее параметры, мы смогли предоставлять названия для осей, а что гораздо более описательно о том, какие данные мы представляем на графике вместе с графическими легендами.

5.2) несколько участков

Мы знаем, как создать простой сюжет, давайте попробуем создать несколько участков на этот раз. Вот образец программы:

from bokeh.plotting import figure, output_file, show

# prepare some data
x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
y0 = [i**2 for i in x]
y1 = [10**i for i in x]
y2 = [10**(i**2) for i in x]

# output to static HTML file
output_file("log_lines.html")

# create a new plot
p = figure(
   tools="pan,box_zoom,reset,save",
   y_axis_type="log", y_range=[0.001, 10**11], title="log axis example",
   x_axis_label='sections', y_axis_label='particles'
)

# add some renderers
p.line(x, x, legend="y=x")
p.circle(x, x, legend="y=x", fill_color="white", size=8)
p.line(x, y0, legend="y=x^2", line_width=3)
p.line(x, y1, legend="y=10^x", line_color="red")
p.circle(x, y1, legend="y=10^x", fill_color="red", line_color="red", size=6)
p.line(x, y2, legend="y=10^x^2", line_color="orange", line_dash="4 4")

# show the results
show(p)

Давайте посмотрим на вывод этой программы: эти графические участки были намного более настроен с легендами и цветами линии. Таким образом, проще дифференцировать между несколькими строчными участками на одном графике.

5.3) Векторные цвета и размеры

Различные цвета и размеры очень важны, когда нам нужно построить большие данные, поскольку у нас есть много для визуализации и очень немногих, чтобы показать. Вот образец программы:

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

# prepare some data
N = 4000
x = np.random.random(size=N) * 100
y = np.random.random(size=N) * 100
radii = np.random.random(size=N) * 1.5
colors = [
    "#%02x%02x%02x" % (int(r), int(g), 150) for r, g in zip(50+2*x, 30+2*y)
]

# output to static HTML file (with CDN resources)
output_file("color_scatter.html", title="color_scatter.py example", mode="cdn")
TOOLS="crosshair,pan,wheel_zoom,box_zoom,reset,box_select,lasso_select"

# create a new plot with the tools above, and explicit ranges
p = figure(tools=TOOLS, x_range=(0,100), y_range=(0,100))

# add a circle renderer with vectorized colors and sizes
p.circle(x,y, radius=radii, fill_color=colors, fill_alpha=0.6, line_color=None)

# show the results
show(p)

Давайте посмотрим на вывод этой программы: векторизированные графики очень важны в некоторых сценариях, таких как:

  • Показывая данные, связанные с тепловым изображением
  • Показывая данные, которые показывают свойство плотности некоторых параметров

5.4) Связанные панорамирование и чистки

Связывание различных аспектов – очень полезная техника визуализации данных. Вот образец программы, как это может быть достигнуто с Bokeh:

import numpy as np
from bokeh.layouts import gridplot
from bokeh.plotting import figure, output_file, show

# prepare some data
N = 100
x = np.linspace(0, 4*np.pi, N)
y0 = np.sin(x)
y1 = np.cos(x)
y2 = np.sin(x) + np.cos(x)

# output to static HTML file
output_file("linked_panning.html")

# create a new plot
s1 = figure(width=250, plot_height=250, title=None)
s1.circle(x, y0, size=10, color="navy", alpha=0.5)

# NEW: create a new plot and share both ranges
s2 = figure(width=250, height=250, x_range=s1.x_range, y_range=s1.y_range, title=None)
s2.triangle(x, y1, size=10, color="firebrick", alpha=0.5)

# NEW: create a new plot and share only one range
s3 = figure(width=250, height=250, x_range=s1.x_range, title=None)
s3.square(x, y2, size=10, color="olive", alpha=0.5)

# NEW: put the subplots in a gridplot
p = gridplot([[s1, s2, s3]], toolbar_location=None)

# show the results
show(p)

Давайте посмотрим на вывод этой программы: эти сюжеты особенно полезны, когда нам нужно отображать вариацию параметра на основе другого параметра.

5.5) оси DateTime

Построение с DateTime – очень распространенная задача. Давайте сделаем попытку с помощью образца программы:

import numpy as np

from bokeh.plotting import figure, output_file, show
from bokeh.sampledata.stocks import AAPL

# prepare some data
aapl = np.array(AAPL['adj_close'])
aapl_dates = np.array(AAPL['date'], dtype=np.datetime64)
window_size = 30
window = np.ones(window_size)/float(window_size)
aapl_avg = np.convolve(aapl, window, 'same')

# output to static HTML file
output_file("stocks.html", title="stocks.py example")

# create a new plot with a a datetime axis type
p = figure(width=800, height=350, x_axis_type="datetime")

# add renderers
p.circle(aapl_dates, aapl, size=4, color='darkgrey', alpha=0.2, legend='close')
p.line(aapl_dates, aapl_avg, color='navy', legend='avg')

# NEW: customize by setting attributes
p.title.text = "AAPL One-Month Average"
p.legend.location = "top_left"
p.grid.grid_line_alpha=0
p.xaxis.axis_label = 'Date'
p.yaxis.axis_label = 'Price'
p.ygrid.band_fill_color="olive"
p.ygrid.band_fill_alpha = 0.1

# show the results
show(p)

Давайте посмотрим на вывод этой программы:

6. Заключение

В этом руководстве мы видели, что Bokeh позволяет легко визуализировать большие данные и создавать различные графические участки. Мы видели примеры различных типов графиков. Bokeh позволяет легко визуализировать данные привлекательно и облегчить чтение и понимать.