交互式图表构建速成课:从零开始的Bokeh应用基础
发布时间: 2024-09-30 04:28:41 阅读量: 68 订阅数: 31
![交互式图表构建速成课:从零开始的Bokeh应用基础](https://ask.qcloudimg.com/http-save/yehe-8756457/8555cae4868ecb5d39749e18bd884a68.png)
# 1. Bokeh简介与安装
## 简介
Bokeh是一个开源的Python交互式可视化库,它以Web浏览器作为其呈现目标,并提供优雅简洁的绘图接口。它能够处理大规模数据集,并支持多种交互功能。Bokeh广泛应用于数据科学、统计和工程领域,以生成交互式图表、仪表板和数据应用。
## 安装方法
### 使用pip安装
要在Python环境中安装Bokeh,最简单的方式是使用pip包管理器:
```bash
pip install bokeh
```
### 使用conda安装
如果你使用Anaconda进行Python开发,可以利用conda来安装:
```bash
conda install bokeh
```
### 安装验证
安装完成后,通过在Python会话中运行以下命令来验证Bokeh是否安装成功:
```python
import bokeh
bokeh.__version__
```
如果顺利输出了Bokeh的版本信息,则表示安装成功。
### 开始使用Bokeh
首次使用Bokeh时,可以尝试一个简单的例子,例如,创建一个基本的散点图,观察数据点的分布:
```python
from bokeh.plotting import figure, show
from bokeh.sampledata.iris import flowers
x = flowers["petal_length"]
y = flowers["petal_width"]
p = figure(title="Iris Petal Dimensions")
p.circle(x, y, size=10, color="navy", alpha=0.5)
show(p)
```
此代码段加载了Iris数据集,并利用Bokeh库生成了一个散点图,展示了花萼长度与宽度的关系。通过这个例子,你可以体会Bokeh简洁的API和强大的交互能力。
以上即是Bokeh库的简单介绍和安装方法。接下来,我们将深入探讨如何用Bokeh绘制各种基本图表。
# 2. Bokeh中的基本图表绘制
### 2.1 图表类型概览
#### 2.1.1 直方图
直方图是一种对数据分布情况的图形表示方法,通过将值域划分为一系列连续的区间(即“桶”或“bin”),并统计每个区间内数据点的数量。在Bokeh中,`figure`函数用于创建图表对象,`hist`方法用于绘制直方图。直方图可以帮助我们理解数据的分布特征,例如对称性、偏斜度、峰值等。
```python
from bokeh.plotting import figure, show, output_file
from bokeh.sampledata虹膜数据集 import flowers
from bokeh.transform import dodge
# 输出到静态 HTML 文件
output_file("histogram.html")
# 创建图表对象
p = figure(title="直方图示例", x_axis_label='petal length', y_axis_label='count')
# 绘制直方图
p.quad(bottom=0, top=flowers['petal_count'], left=dodge('petal_length', -0.25, range=p.x_range), right=dodge('petal_length', +0.25, range=p.x_range), color="red", line_color="black")
# 显示图表
show(p)
```
该代码段首先导入必要的库和数据集,然后通过`figure`函数创建图表,并使用`quad`方法绘制直方图。这里,`dodge`函数用于对每个桶的`petal_length`值进行偏移,确保每个桶在x轴上清晰分开。`bottom`参数设置为0,因为直方图的底部从0开始。`top`参数设置为`flowers['petal_count']`,即每个桶的数据点数量。最后,通过`show`函数将图表展示出来。
#### 2.1.2 折线图
折线图通过连接一系列点来显示数据随时间或有序类别变化的趋势。在Bokeh中,可以使用`line`方法绘制折线图。折线图非常适合展示时间序列数据或比较不同类别的变化趋势。
```python
from bokeh.plotting import figure, show, output_file
from bokeh.sampledata.stocks import AAPL
# 输出到静态 HTML 文件
output_file("line_plot.html")
# 创建图表对象
p = figure(title="AAPL Stock Prices", x_axis_label='Date', y_axis_label='Price (USD)')
# 绘制折线图
p.line(AAPL['date'], AAPL['adj_close'], line_width=2)
# 显示图表
show(p)
```
在上述代码中,我们使用了`bokeh.sampledata.stocks`中的AAPL数据集,绘制了苹果公司的股票收盘价随日期变化的趋势。`line`函数接受x轴和y轴的数据,并通过`line_width`参数控制线的宽度。
#### 2.1.3 散点图
散点图是一种数据点分布图,通过图中的点揭示变量间的相关性。Bokeh中的散点图是通过`circle`或`square`等方法绘制的,用户可以通过设置不同的标记形状和颜色来区分不同的数据集。
```python
from bokeh.plotting import figure, show, output_file
# 输出到静态 HTML 文件
output_file("scatter_plot.html")
# 创建图表对象
p = figure(title="散点图示例", x_axis_label='x', y_axis_label='y')
# 绘制散点图
p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)
# 显示图表
show(p)
```
在这个例子中,我们创建了一个带有x轴和y轴标签的图表,并使用`circle`方法绘制了五个点。`size`参数定义了点的大小,`color`定义了点的颜色,`alpha`定义了点的透明度。
### 2.2 数据的输入与展示
#### 2.2.1 列表和数组
Bokeh可以接受Python标准列表和NumPy数组作为输入数据。使用这些数据结构可以方便地对数据进行操作,并利用Bokeh强大的绘图功能。
```python
import numpy as np
from bokeh.plotting import figure, show
# 创建一些数据
x = np.linspace(0, 2*np.pi, 200)
y = np.sin(x)
# 创建图表对象
p = figure(title="sin(x) over x", x_axis_label='x', y_axis_label='sin(x)')
# 绘制曲线
p.line(x, y, line_width=2)
# 显示图表
show(p)
```
在这个例子中,我们使用了NumPy生成了200个点,表示`sin(x)`函数在区间`[0, 2π]`的值。然后,我们用`line`方法绘制了这些点形成的曲线。
#### 2.2.2 Pandas DataFrame
Pandas是一个强大的数据处理库,它的DataFrame对象是处理和分析表格数据的常用工具。Bokeh与Pandas结合紧密,能够直接使用DataFrame中的数据进行绘图。
```python
from bokeh.plotting import figure, show
from bokeh.sampledata虹膜数据集 import iris
import pandas as pd
# 将数据转换成Pandas DataFrame
df = pd.DataFrame(iris)
# 创建图表对象
p = figure(title="Iris Dataset Scatter Plot", x_axis_label='Sepal Length', y_axis_label='Sepal Width')
# 绘制散点图
p.circle('sepal_length', 'sepal_width', size=10, color="blue", source=df)
# 显示图表
show(p)
```
此处,我们首先将`iris`数据集转换为DataFrame,然后使用`circle`方法绘制散点图,其中x轴是`sepal_length`,y轴是`sepal_width`。
### 2.3 格式化和布局
#### 2.3.1 标题和轴标签
图表的标题和轴标签是向观众传达图表意图的关键元素,它们帮助解释数据所代表的意义。在Bokeh中,可以通过设置图表对象的`title`和`x_axis_label`、`y_axis_label`属性来添加这些元素。
```python
from bokeh.plotting import figure, show
# 创建图表对象
p = figure(title="散点图示例", x_axis_label='x轴', y_axis_label='y轴')
# 绘制示例数据
p.circle([1, 2, 3, 4, 5],
```
0
0