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

Matplotlib pcolormesh如何绘制带时间x轴与布尔采样着色的图

解决方法

核心问题原因

pcolormesh默认使用shading='flat'渲染模式,要求传入的X轴网格边界数量比数据列数多1,你两种写法的问题分别是:

  • 第一种传入的all_days长度和数据列数一致,缺少最后一个边界,导致着色错位
  • 第二种没有传入X轴参数,matplotlib默认使用数组索引作为刻度,无时间标签

可直接运行的正确代码

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt 

# 生成测试数据
all_days = pd.date_range("2001-01-01", "2020-12-31", freq="D")
times = all_days[::10]
arr = np.isin(all_days, times).reshape(1, -1)

# 渲染图表:指定shading参数适配点与网格的对应关系
plt.pcolormesh(all_days, [0, 1], arr, shading='nearest')
# 隐藏无意义的y轴刻度
plt.yticks([])
# 自动格式化x轴时间标签,避免重叠
plt.gcf().autofmt_xdate()

plt.show()

代码修改说明

  • 新增shading='nearest'参数:让每个数据点直接对应一个独立颜色块,不需要额外补充网格边界
  • Y轴传入[0, 1]匹配单行数据的渲染高度范围
  • 额外添加的yticks([])和autofmt_xdate()为可选优化,可根据实际显示需求调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:27:03