You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib为多索引DataFrame的每个时间区间生成横向子条形图?

实现方案

当然可以实现,以下是基于Matplotlib的具体代码方案:

核心思路

  1. 提取所有唯一的5min_intervals时间区间
  2. 创建垂直排列的子图布局,每个子图对应一个时间区间
  3. 遍历每个区间,在对应子图绘制横向条形图,并优化样式提升可读性

完整代码示例

import matplotlib.pyplot as plt
import pandas as pd

# 构造示例DataFrame(如果已有实际数据可跳过此段)
data = [
    ("2023-07-27 17:40:00", 172.20, 330),
    ("2023-07-27 17:40:00", 172.19, 1),
    ("2023-07-27 17:45:00", 172.25, 4),
    ("2023-07-27 17:45:00", 172.24, 59),
    ("2023-07-27 17:45:00", 172.23, 101),
    ("2023-07-27 17:45:00", 172.22, 224),
    ("2023-07-27 17:45:00", 172.21, 64),
    ("2023-07-27 17:45:00", 172.20, 303),
    ("2023-07-27 17:45:00", 172.19, 740),
    ("2023-07-27 17:45:00", 172.18, 26),
    ("2023-07-27 17:50:00", 172.17, 30),
    ("2023-07-27 17:50:00", 172.16, 2),
    ("2023-07-27 17:50:00", 172.15, 1014),
    ("2023-07-27 17:50:00", 172.14, 781),
    ("2023-07-27 17:50:00", 172.13, 1285),
]
df = pd.DataFrame(data, columns=["5min_intervals", "price", "quantity"])
df.set_index(["5min_intervals", "price"], inplace=True)

# 获取所有唯一的时间区间
time_intervals = df.index.levels[0]
n_intervals = len(time_intervals)

# 创建垂直排列的子图布局,共享横轴方便对比
fig, axes = plt.subplots(nrows=n_intervals, ncols=1, figsize=(10, 2*n_intervals), sharex=True)

# 遍历每个时间区间绘制横向条形图
for ax, interval in zip(axes, time_intervals):
    # 获取当前区间的子数据
    sub_df = df.loc[interval]
    # 绘制横向条形图:y轴为价格,x轴为成交量
    ax.barh(sub_df.index, sub_df["quantity"], height=0.6)
    # 设置子图标题为当前时间区间
    ax.set_title(f"{interval}", fontsize=10)
    # 设置y轴标签
    ax.set_ylabel("Price", fontsize=8)
    # 优化y轴刻度显示
    ax.set_yticks(sub_df.index)
    ax.set_yticklabels(sub_df.index, fontsize=8)
    # 添加横向网格线,提升可读性
    ax.grid(axis='x', linestyle='--', alpha=0.7)

# 设置整体横轴标签
axes[-1].set_xlabel("Quantity", fontsize=10)
# 自动调整子图间距,避免重叠
plt.tight_layout()
plt.show()

关键细节优化

  • sharex=True:让所有子图共享横轴,便于直接对比不同区间的成交量规模
  • 动态子图高度:根据时间区间数量自动调整子图高度,避免图表拥挤
  • 刻度与标签优化:缩小字体尺寸,保证所有价格刻度清晰显示
  • 网格线:仅添加横轴网格线,辅助读取成交量数值

内容的提问来源于stack exchange,提问作者Bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:28:08