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

如何调整imshow或同类函数的单元格宽度,使首尾单元格宽度减半?

实现imshow首尾单元格宽度为其他一半的方法

默认的imshow会强制所有单元格等宽,没法直接实现首尾单元格半宽的需求,换用pcolormesh可以自定义单元格的边界位置,从而实现目标效果。

具体实现步骤:

  • 定义x轴的边界数组,让首尾两个单元格的宽度为中间单元格的一半。比如6个数据对应7个边界点:x_edges = np.array([0, 0.5, 1.5, 2.5, 3.5, 4.5, 5.0]),第一个区间[0,0.5]和最后一个[4.5,5.0]宽度为0.5,中间每个区间宽度为1.0。
  • 用pcolormesh绘制,传入x边界、y边界(这里y方向只有一行,边界设为[0,1]即可)和数据矩阵。
  • 调整坐标轴显示,让图形对齐更合理。

代码示例:

import numpy as np
import matplotlib.pyplot as plt

data = np.array([0.    , 0.2   , 0.4   , 0.6   , 0.8   , 1.    ])
fig, ax = plt.subplots()

# 定义单元格的x轴边界,首尾宽度为中间的一半
x_edges = np.array([0, 0.5, 1.5, 2.5, 3.5, 4.5, 5.0])
y_edges = np.array([0, 1])

# 使用pcolormesh绘制不等宽单元格
ax.pcolormesh(x_edges, y_edges, data.reshape(1, -1), cmap='hot')

# 调整坐标轴,让y轴只显示一行的范围
ax.set_ylim(y_edges[0], y_edges[-1])
# 隐藏y轴刻度,因为只有一行数据
ax.set_yticks([])

plt.show()

如果需要更精细化的控制,也可以用matplotlib.patches.Rectangle逐个绘制矩形并设置宽度,但pcolormesh的方式更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:30:01