📅  最后修改于: 2023-12-03 15:29:38.212000             🧑  作者: Mango
Bokeh是一个Python交互式可视化库,它能够帮助程序员通过数据可视化来探索数据集并发现隐藏在其中的关系和规律。在本教程中,我们将深入了解Bokeh库,探索其各种功能和特性。
在安装Bokeh之前,请确保已经安装了Python环境。要安装Bokeh,可以使用pip安装:
pip install bokeh
Bokeh中有很多种不同类型的图表可以用来展示数据。下面是其中一些基础图表:
使用Bokeh创建图表非常简单。我们只需要导入必要的库,然后用数据填充一个图表对象即可。下面是一个例子:
from bokeh.plotting import figure, output_file, show
# 创建一个新的输出文件
output_file("example.html")
# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 创建一个线性图
p = figure(title="Line Chart Example", x_axis_label='X', y_axis_label='Y')
# 将数据填充到图表对象中
p.line(x, y)
# 显示图表
show(p)
在此示例中,我们使用Bokeh创建一个线性图表,并将其保存为一个HTML文件。然后,我们填充一些数据,并绘制一条线。最后,我们显示该图表。
Bokeh的一个独特特性就是它的交互性。可以使用它来创建具有以下交互特性的图表:
下面是一个交互性图表的例子:
from bokeh.models import HoverTool
from bokeh.plotting import figure, output_file, show
# 创建一个新的输出文件
output_file("example.html")
# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 创建一个线性图
p = figure(title="Interactive Line Chart Example", x_axis_label='X', y_axis_label='Y',
tools="pan,wheel_zoom,box_zoom,reset,save")
# 将数据填充到图表对象中
p.line(x, y)
# 添加工具提示
hover = HoverTool()
hover.tooltips = [("X", "@x"), ("Y", "@y")]
p.add_tools(hover)
# 显示图表
show(p)
在此示例中,我们使用Bokeh创建了一个交互性线性图表。我们添加了缩放和平移工具、工具提示,可以用这些工具来探索数据并发现隐藏在其中的规律。
Bokeh提供了一些可以处理大规模数据集的工具,包括:
下面是一个大规模数据可视化的例子:
from bokeh.plotting import figure, show
from bokeh.tile_providers import CARTODBPOSITRON
from bokeh.models import ColumnDataSource, CategoricalColorMapper
from bokeh.transform import factor_cmap
import pandas as pd
# 准备数据
url = 'https://data.austintexas.gov/resource/3syk-w9eu.csv?$limit=100000'
df = pd.read_csv(url)
df['latitude_round'] = df['latitude'].round(4)
df['longitude_round'] = df['longitude'].round(4)
source = ColumnDataSource(df)
# 创建地图
p = figure(x_range=(df['longitude'].min(), df['longitude'].max()), y_range=(df['latitude'].min(), df['latitude'].max()),
x_axis_type="mercator", y_axis_type="mercator", title="Austin 311 Service Requests")
p.add_tile(CARTODBPOSITRON)
# 绘制散点图
mapper = CategoricalColorMapper(factors=df['issue_category'].unique().tolist(),
palette=['#2980B9', '#F1948A', '#58D68D', '#AF7AC5', '#F7DC6F'])
p.circle(x='longitude', y='latitude', size=5, source=source, color={'field': 'issue_category', 'transform': mapper},
alpha=0.5)
# 显示图表
show(p)
在此示例中,我们使用Bokeh和Pandas来可视化Austin的311服务请求数据。我们利用了Bokeh的地图功能,以及圆点的颜色编码来表示服务请求的类型。
Bokeh Server是Bokeh的另一个强大功能,它能够将可视化应用程序部署为Web应用程序,并允许用户与其进行交互。我们可以通过以下步骤使用Bokeh Server:
引入必要的库:
from bokeh.plotting import figure, curdoc
from bokeh.layouts import column
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import Slider
创建一个初始数据源:
source = ColumnDataSource(data=dict(x=[1, 2, 3, 4, 5], y=[2, 4, 6, 8, 10]))
创建一个交互性图表:
plot = figure(plot_height=400, plot_width=400)
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
创建一个滑动条:
slider = Slider(start=0, end=10, value=1, step=.1, title="Multiplier")
定义一个更新函数:
def update(attr, old, new):
data = dict(x=[1, 2, 3, 4, 5], y=[2, 4, 6, 8, 10])
multiplier = slider.value
for i in range(len(data['x'])):
data['y'][i] = data['y'][i] * multiplier
source.data = data
将滑动条的响应函数绑定到更新函数:
slider.on_change('value', update)
把图表和滑动条组合在一起:
layout = column(slider, plot)
把布局添加到文档中:
curdoc().add_root(layout)
通过以上步骤,我们创建了一个交互性图表,并将其部署为Web应用程序。我们可以运行以下命令来启动本地服务器:
bokeh serve --show myapp.py
自此,我们就完成了Bokeh教程的介绍。希望这个教程能够帮助你更好地掌握Bokeh库,并利用数据可视化来做出更加精彩的发现!