bqplot 数据可视化:条形图(Bar Chart)全面指南

bqplot 数据可视化:条形图(Bar Chart)全面指南

bqplot Plotting library for IPython/Jupyter notebooks bqplot 项目地址: 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 提供了两种颜色模式:

  1. 'group':每个x位置的所有柱子使用相同颜色
  2. '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 bqplot 项目地址: https://gitcode.com/gh_mirrors/bq/bqplot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡寒侃Joe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值