在本文中,我们将研究使用 Python Bokeh 的数据可视化。
Bokeh 允许用户接收任何格式的数据,例如 CSV、JSON、硬编码数据或数据库。我们可以使用这个库创建散点图、折线图等。它在行业中被广泛用于股票市场分析,因为该库很容易与不同的 Web 框架以及 JS、Django 和 HTML 集成。
继续阅读本文,了解有关 Bokeh 用法的一些见解
Python Bokeh 的特点
- 交互:Bokeh 是一个交互性很强的库,除了静态图之外,它还提供图形交互功能。
- 功能强大:Bokeh 是一个功能强大的库,因为它允许为用例添加 JavaScript。
- 便携:Bokeh 图表的输出可以在任何 Web 框架(例如 Django 和 Python)以及 Jupyter Notebook 上呈现。
- 灵活:易于绘制自定义和复杂的用例。
- 与其他流行工具交互:允许与 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_label
和y_axis_label
。
p.line(x, y, legend = "test" , line_width = 1.5 ) |
现在来渲染字形,我们将使用上面的代码片段。x
我们指定了之前定义的两个列表y
。我们还指定其他参数,例如legend
和line_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) |
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 是强大的数据可视化库之一,可用于您的所有项目。请尝试本文中的示例,并在下面的评论部分告诉我们您的感受。