使用 Python Bokeh 进行数据可视化

在本文中,我们将研究使用 Python Bokeh 的数据可视化。

Bokeh 允许用户接收任何格式的数据,例如 CSV、JSON、硬编码数据或数据库。我们可以使用这个库创建散点图、折线图等。它在行业中被广泛用于股票市场分析,因为该库很容易与不同的 Web 框架以及 JS、Django 和 HTML 集成。

继续阅读本文,了解有关 Bokeh 用法的一些见解

Python Bokeh 的特点

  1. 交互:Bokeh 是一个交互性很强的库,除了静态图之外,它还提供图形交互功能。
  2. 功能强大:Bokeh 是一个功能强大的库,因为它允许为用例添加 JavaScript。
  3. 便携:Bokeh 图表的输出可以在任何 Web 框架(例如 Django 和 Python)以及 Jupyter Notebook 上呈现。
  4. 灵活:易于绘制自定义和复杂的用例。
  5. 与其他流行工具交互:允许与 Pandas 和 Jupyter Notebook 等 pydata 工具轻松交互。
散景是交互式的

使用 Python Bokeh 开始数据可视化

每当我们使用 python 做任何事情时,创建虚拟环境是一个很好的做法,最好的方法是运行命令pip install pipenv运行此命令后,您将有权访问该pipenv命令并且可以运行pipenv shell. 这可确保虚拟环境已设置。

现在您可以使用虚拟环境来安装 Bokeh 和Python pandas您可以使用命令:

pipenv install bokeh pandas

我们将使用 pandas,因为这个库允许我们将 CSV 文件作为数据帧读取。

1. 绘制折线图

在开始从 CSV 文件绘制图表之前,我们将引导您完成绘制简单折线图的过程,以帮助您熟悉 Bokeh。

from bokeh.plotting import figure, output_file, show
  • figure模块将帮助用户创建绘图。
  • output_file将定义要生成的 HTML 文件的名称。
  • show模块将生成并显示 HTML 文件。
x=[1,2,3,4,5]
y=[4,3,3,5,4]

对于数据,我们只需将其创建为 2 个列表 -[1,2,3,4,5] 和 [4,3,3,5,4]。

这些点例如 (1,4)、(2,3)、(3,3) 等。

output_file('index.html')

index.html我们使用上面的代码设置输出文件。

p = figure(
    title = 'Example chart',
    x_axis_label = 'X axis',
    y_axis_label = 'Y axis'
)

我们使用figure()来创建绘图。figure() 接受多个属性。您可以参考该模块的文档以获取更多详细信息。

我们将使用title,x_axis_labely_axis_label

p.line(x, y, legend="test", line_width=1.5)

现在来渲染字形,我们将使用上面的代码片段。x我们指定了之前定义的两个列表y我们还指定其他参数,例如legendline_width

请注意,此处使用这些参数是因为我们使用的是line图表。对于其他类型的图表,这些参数往往会有所不同。

show(p)

我们使用该show()函数来显示结果,结果显示index.html如下图所示。完整的代码也附上了。

from bokeh.plotting import figure, output_file, show
x=[1,2,3,4,5]
y=[4,3,3,5,4]
 
# defining the output file
output_file('index.html')
 
# Adding the plot
p = figure(
    title = 'Example chart',
    x_axis_label = 'X axis',
    y_axis_label = 'Y axis'
)
 
# Rendering the graph
p.line(x, y, legend="test", line_width=1.5)
 
# Display the results
show(p)
输出图表显示在index.html上

2. 从 CSV 文件绘制图表

为了绘制图表,我们将使用一个简单的汽车数据集,它有 2 列,即汽车名称和马力。我们将使用图表来了解这些参数之间的相关性。数据集如下图

数据集

可以使用 Bokeh 将上述数据集绘制为直方图 (hbar),其代码如下:

from bokeh.plotting import figure, output_file, show, save, ColumnDataSource
from bokeh.models.tools import HoverTool
from bokeh.transform import factor_cmap
from bokeh.palettes import Blues8
from bokeh.embed import components
import pandas
 
df = pandas.read_csv('cars.csv')
 
source = ColumnDataSource(df)
 
output_file('index.html')
car_list = source.data['Car'].tolist()
 
# Add plot
p = figure(
    y_range=car_list,
    plot_width=800,
    plot_height=600,
    title='Cars With Top Horsepower',
    x_axis_label='Horsepower',
    tools="pan,box_select,zoom_in,zoom_out,save,reset"
)
 
# Render glyph
p.hbar(
    y='Car',
    right='Horsepower',
    left=0,
    height=0.4,
    fill_color=factor_cmap(
      'Car',
      palette=Blues8,
      factors=car_list
    ),
    fill_alpha=0.9,
    source=source,
    legend='Car'
)
 
# Add Legend
p.legend.orientation = 'vertical'
p.legend.location = 'top_right'
p.legend.label_text_font_size = '10px'
 
 
# Show results
show(p)

渲染的输出index.html如下:

图形输出

结论

因此,我们到了本文的结尾。Bokeh 是强大的数据可视化库之一,可用于您的所有项目。请尝试本文中的示例,并在下面的评论部分告诉我们您的感受。