跳转至

使用 Bokeh 进行数据交互可视化

原文:https://www.geesforgeks.org/interactive-visualization-of-data-use-bokeh/

Bokeh 是一个 Python 库,用于在网络浏览器中创建交互式数据可视化。它以视觉上令人愉悦的方式提供了人类可读且快速的数据呈现。如果您以前在 Python 中使用过可视化,很可能您使用过 matplotlib。但是博克不同于马特普罗特利布。

要安装 Bokeh,请在终端中键入以下命令。

pip install bokeh

为什么要用 Bokeh?

matplotlib 和 Bokeh 的预期用途大不相同。Matplotlib 创建静态图形,对于快速简单的可视化或创建出版物质量的图像非常有用。Bokeh 创建可视化以在网络上显示(无论是本地还是嵌入网页),最重要的是,可视化意味着高度交互。Matplotlib 不提供这两个特性。

如果你想与你的数据进行可视化交互,或者你想将交互式可视化数据分发给网络观众,Bokeh 就是你的图书馆!如果你的主要兴趣是制作最终的可视化出版物,matplotlib 可能会更好,尽管 Bokeh 确实提供了一种创建静态图形的方法。

绘制简单图形

在这个例子中,我们将使用一个内置数据集,即 flowers 数据集。我们可以使用 circle() 方法将每个数据点绘制成图上的圆形,我们还可以指定自定义属性如:

  • The first two elements must be data on the X axis and Y axis respectively.
  • Color: Dynamic coloring, as shown in the figure.
  • Fill_alpha: Specify the opacity for the circle.
  • Size: Specify the size of each circle.

示例:

计算机编程语言

from bokeh.plotting import figure, output_file, show 
from bokeh.sampledata.iris import flowers  

# assign custom colors to represent each 
# class of data in a dictionary format
colormap = {'setosa': 'red', 'versicolor': 'green', 
            'virginica': 'blue'}

colors = [colormap[x] for x in flowers['species']]

# title for the graph
p = figure(title="Iris Morphology")  

# label on x-axis
p.xaxis.axis_label = 'Petal Length' 

# label on y-axis
p.yaxis.axis_label = 'Petal Width'  

# plot each datapoint as a circle
# with custom attributes.
p.circle(flowers["petal_length"],
         flowers["petal_width"],
         color=colors, 
         fill_alpha=0.3,
         size=15)

# you can save the output as an
# interactive html file
output_file("iris1.html", title="iris.py example")

# display the generated plot of graph
show(p)

输出:

在上例中, output_file() 函数用于将生成的输出保存为 html 文件,因为 bokeh 使用 web 格式提供交互显示。最后 show()函数用于显示生成的输出。

注:

  • 红色=濑户,绿色=云芝,蓝色=弗吉尼亚
  • 在每个可视化的右上角,都有 bokeh 提供的交互功能。它允许 1。潘穿越剧情,2。使用框选择缩放,3。使用滚轮缩放,4。保存,5。重置,6。帮助

绘制条形图

对于这个例子,我们将使用自定义创建的数据集,使用代码本身的列表,即水果数据集。 output_file() 函数用于将生成的输出保存为 html 文件,因为 bokeh 使用 web 格式。我们可以使用 ColumnDataSource() 函数将彼此创建的自定义数据集(两个列表)映射为字典格式。图形()功能用于初始化图形图形,以便可以使用各种参数在其上绘制数据,例如:

  • x_range :定义 x 轴上的数据。
  • 绘图_宽度,绘图_高度:定义图形的宽度和高度。
  • 工具栏_位置:定义工具栏的位置。
  • 标题:定义图形的标题。

这里我们使用简单的竖线来表示数据,因此我们使用 vbar()方法,并为竖线分配各种属性,我们在其中传递不同的参数,例如:

  • x:x 轴方向数据
  • 顶部:y 轴方向数据
  • 宽度:定义每个条的宽度
  • 来源:数据来源
  • 图例_字段:显示数据中存在的类别列表
  • 线条颜色:定义图形中线条的颜色
  • fill_color :为数据类定义不同的颜色

这里可以传递更多的参数。可以使用的其他一些属性包括:

  • y_range.start :用于定义 y 轴上数据的下限。
  • y_range.end :用于定义 y 轴上数据的最大上限。
  • 图例.方向:定义图例条的方向。
  • 图例位置:定义图例条的位置。

最后 show() 功能用于显示生成的输出。

示例:

计算机编程语言

from bokeh.io import output_file, show
from bokeh.models import ColumnDataSource
from bokeh.palettes import Spectral10
from bokeh.plotting import figure
from bokeh.transform import factor_cmap

output_file("fruits_bar_chart.html") #output save file name

# creating custom data
fruits = ['Apples', 'Pears', 'Nectarines',
          'Plums', 'Grapes', 'Strawberries',
          'bananas','berries','pineapples','lichi']
counts = [51, 34, 4, 28, 119, 79, 15, 68, 26, 88]

# mapping counts with classes as a dictionary
source = ColumnDataSource(data=dict(fruits=fruits,
                                    counts=counts))

# initializing the figure 
p = figure(x_range=fruits,
           plot_width=800, 
           plot_height=350,
           toolbar_location=None,
           title="Fruit Counts")

# assigning various attributes to plot
p.vbar(x='fruits', top='counts',
       width=1, source=source,
       legend_field="fruits",
       line_color='white',
       fill_color=factor_cmap('fruits',
                              palette=Spectral10,
                              factors=fruits))

p.xgrid.grid_line_color = None
p.y_range.start = 0
p.y_range.end = 150
p.legend.orientation = "horizontal"
p.legend.location = "top_center"

# display output
show(p)

输出:

注:这是静态图,也是 bokeh 提供的,类似 matplotlib。



回到顶部