使用bqplot进行交互式数据可视化:从基础到高级
bqplot Plotting library for IPython/Jupyter notebooks 项目地址: https://gitcode.com/gh_mirrors/bq/bqplot
前言
bqplot是一个基于Jupyter生态系统的交互式可视化库,它结合了Python的易用性和D3.js的强大交互能力。本文将全面介绍如何使用bqplot的pyplot接口创建各种类型的图表,并实现丰富的交互功能。
环境准备
首先需要导入必要的库:
from bqplot import pyplot as plt
import numpy as np
import pandas as pd
import datetime as dt
基础图表绘制
1. 折线图
折线图是最基础也是最常用的图表类型之一。bqplot创建折线图非常简单:
# 生成随机数据
np.random.seed(0)
size = 100
y_data = np.cumsum(np.random.randn(size) * 100.0)
x = np.linspace(0.0, 10.0, size)
# 创建折线图
plt.figure()
plt.plot(x, y_data)
plt.xlabel("时间")
plt.ylabel("股票价格")
plt.title("布朗运动增量")
plt.show()
2. 散点图
散点图适合展示两个变量之间的关系:
y_data_2 = np.cumsum(np.random.randn(size))
y_data_3 = np.cumsum(np.random.randn(size) * 100.0)
plt.figure(title="带颜色的散点图")
plt.scatter(y_data_2, y_data_3, color=y_data, stroke="black")
plt.show()
3. 直方图
直方图用于展示数据的分布情况:
plt.figure()
plt.hist(y_data, colors=["OrangeRed"])
plt.show()
4. 柱状图
柱状图适合展示分类数据的比较:
plt.figure()
bar_x = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
plt.bar(bar_x, y_data_3[:10])
plt.show()
5. 饼图
饼图用于展示各部分占总体的比例:
plt.figure()
d = abs(y_data_2[:5])
plt.pie(d)
plt.show()
金融图表
1. OHLC图
OHLC图(开盘-最高-最低-收盘图)是金融分析中常用的图表:
dates = np.arange(dt.datetime(2014, 1, 2), dt.datetime(2014, 1, 30), dt.timedelta(days=1))
prices = np.array([
[187.21, 187.4, 185.2, 185.53],
# 更多价格数据...
])
plt.figure()
plt.ohlc(dates, prices)
plt.show()
2. 箱线图
箱线图用于展示数据的分布特征:
plt.figure()
plt.boxplot(np.arange(10), np.random.randn(10, 100))
plt.show()
地理图表
bqplot支持地理数据的可视化:
plt.figure()
plt.geo(map_data="WorldMap")
plt.show()
热力图
热力图适合展示矩阵数据的分布:
plt.figure(padding_y=0)
plt.heatmap(x * x[:, np.newaxis])
plt.show()
高级功能
1. 多图表组合
可以在同一个图形中叠加多种图表类型:
plt.figure()
plt.plot(x, y_data_3, colors=["orangered"])
plt.scatter(x, y_data, stroke="black")
plt.show()
2. 标记字符串
使用简写字符串快速设置线条样式:
mark_x = np.arange(10)
plt.figure(title="使用标记字符串")
plt.plot(mark_x, 3 * mark_x + 5, "g-.s") # 绿色、点划线、方块标记
plt.plot(mark_x ** 2, "m:d") # 品红色、虚线、菱形标记
plt.show()
3. 交互功能
bqplot提供了多种交互工具:
刷选工具
fig = plt.figure()
plt.scatter(y_data_2, y_data_3, colors=["orange"], stroke="black")
label = widgets.Label()
def callback(name, value):
label.value = str(value)
plt.brush_selector(callback)
区间选择器
fig = plt.figure()
n = 100
plt.plot(np.arange(n), y_data_3)
label = widgets.Label()
def callback(name, value):
label.value = str(value)
plt.int_selector(callback)
图表管理
1. 多图形管理
bqplot支持同时管理多个图形:
plt.figure(1)
plt.plot(x, y_data_3)
plt.show()
plt.figure(2)
plt.plot(x[:20], y_data_3[:20])
plt.show()
2. 图形属性查看
可以查看和修改图形的属性:
marks = plt.current_figure().marks
marks[0].get_state()
3. 图形清理
plt.clear() # 清除当前图形
plt.close(2) # 关闭指定图形
结语
bqplot提供了丰富的可视化类型和强大的交互功能,特别适合在Jupyter环境中进行数据探索和分析。通过本文的介绍,您应该已经掌握了从基础图表到高级交互的各种技巧。实际应用中,可以根据需求组合不同的图表类型和交互工具,创建出更加丰富和专业的数据可视化作品。
bqplot Plotting library for IPython/Jupyter notebooks 项目地址: https://gitcode.com/gh_mirrors/bq/bqplot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考