bqplot 数据可视化:条形图(Bar Chart)全面指南
bqplot Plotting library for IPython/Jupyter notebooks 项目地址: https://gitcode.com/gh_mirrors/bq/bqplot
前言
bqplot 是一个基于 Python 的交互式可视化库,特别适合在 Jupyter 环境中使用。本文将深入探讨 bqplot 中的条形图功能,展示如何创建各种类型的条形图以及如何自定义它们的样式和行为。
基础准备
首先,我们需要导入必要的库并准备一些示例数据:
import numpy as np
import bqplot.pyplot as plt
from bqplot import CATEGORY10, ColorScale
# 准备示例数据
size = 100
np.random.seed(0)
x_data = range(size)
y_data = np.random.randn(size)
y_data_2 = np.random.randn(size)
y_data_3 = np.cumsum(np.random.randn(size) * 100.0)
基础条形图
创建最基本的条形图非常简单:
plt.figure(title="基础条形图示例")
plt.bar(np.arange(10), np.random.rand(10))
plt.show()
这段代码会生成一个包含10个随机高度柱子的条形图。
水平条形图
通过设置 orientation='horizontal'
参数,我们可以轻松创建水平条形图:
plt.figure(title="水平条形图示例")
plt.bar(np.arange(10), np.random.uniform(-1, 1, 10), orientation="horizontal")
plt.show()
水平条形图特别适合展示类别名称较长的情况。
调整基准线
条形图的基准线默认是0,但我们可以通过 base
参数进行调整:
fig = plt.figure()
bar = plt.bar(x_data[:20], np.abs(y_data_2[:20]), base=1.0)
fig
创建后,我们还可以动态调整基准线:
bar.base = 2.0 # 将基准线调整为2
bar.align = "right" # 将柱子右对齐
条形图样式调整
bqplot 提供了多种方式来调整条形图的样式:
# 增加柱子间距
fig = plt.figure()
bar = plt.bar(x_data[:20], y_data[:20], padding=0.3)
fig
# 调整边框和透明度
bar.stroke = "red" # 设置边框颜色为红色
bar.opacities = [0.5, 0.2] # 设置透明度
# 动态切换为水平条形图
bar.orientation = "horizontal"
fig.axes[0].orientation = "vertical"
fig.axes[1].orientation = "horizontal"
堆叠条形图
对于多维数据,我们可以创建堆叠条形图:
fig = plt.figure()
bar = plt.bar(x_data, [y_data[:20], y_data_2[:20]], padding=0.2, colors=CATEGORY10)
fig
分组条形图
将 type
属性设置为 "grouped" 可以创建分组条形图:
bar.type = "grouped" # 将堆叠图转换为分组图
# 或者直接创建分组条形图
fig = plt.figure()
bar = plt.bar(
x_data,
[y_data[:20], y_data_2[:20]],
padding=0.2,
colors=CATEGORY10,
orientation="horizontal",
)
fig
颜色模式
bqplot 提供了两种颜色模式:
- 'group':每个x位置的所有柱子使用相同颜色
- 'element':每个维度的所有柱子使用相同颜色
# 组颜色模式
fig = plt.figure()
bar = plt.bar(
x_data,
[y_data[:20], y_data_2[:20]],
padding=0.2,
colors=CATEGORY10,
color_mode="group",
)
fig
# 元素颜色模式(适用于一维数据)
fig = plt.figure()
bar = plt.bar(
x_data,
y_data[:20],
padding=0.2,
color_mode="element",
labels=["数值"],
display_legend=True,
)
fig
使用颜色表示额外维度
我们可以使用颜色来表示数据的另一个维度:
# 使用颜色表示y值的绝对值
fig = plt.figure()
plt.scales(scales={"color": ColorScale(scheme="Reds")}) # 使用红色渐变
bar = plt.bar(x_data[:20], y_data[:20], color=np.abs(y_data[:20]), padding=0.2)
# 调整边距以容纳颜色轴
fig.fig_margin = dict(top=50, bottom=80, left=50, right=50)
fig
对于多维数据,我们可以选择沿不同轴应用颜色:
# 沿axis=1应用颜色(默认)
fig = plt.figure()
plt.scales(scales={"color": ColorScale(scheme="Reds")})
y_vals = [y_data[:20], y_data_2[:20], y_data_3[:20] / 100.0]
color_data = np.mean(y_vals, axis=1) # 计算每个维度的平均值
bar = plt.bar(
x_data,
y_vals,
color=color_data,
padding=0.2,
labels=["维度1", "维度2", "维度3"],
display_legend=True,
)
fig.fig_margin = dict(top=50, bottom=80, left=50, right=50)
fig
# 沿axis=0应用颜色
fig = plt.figure()
plt.scales(scales={"color": ColorScale(mid=0.0)}) # 自定义颜色中点
y_vals = [y_data[:20], y_data_2[:20], y_data_3[:20] / 100.0]
color_data = np.mean(y_vals, axis=0) # 计算每个x位置的平均值
bar = plt.bar(
x_data, y_vals, color=color_data, padding=0.2, color_mode="group", stroke="orange"
)
fig.fig_margin = dict(top=50, bottom=80, left=50, right=50)
fig
结语
bqplot 的条形图功能非常强大且灵活,支持多种展示方式和自定义选项。通过本文的介绍,您应该已经掌握了创建基础条形图、水平条形图、堆叠条形图和分组条形图的方法,以及如何调整它们的样式和使用颜色编码额外维度。这些功能使得 bqplot 成为数据分析和可视化的强大工具。
bqplot Plotting library for IPython/Jupyter notebooks 项目地址: https://gitcode.com/gh_mirrors/bq/bqplot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考