matplotlib pcolormesh未按预期绘制箱

wztqucjr  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(92)

所以我尝试使用pcolormesh绘制不规则间隔的数据。x数据表示标签,而y数组标识测量的开始时间(假设秒)。因此,我希望垂直箱Map到开始时间[1,2,5,6,12,13],并适当地对箱进行着色。但我得到了完全不同的东西(我无法理解):

cmap = plt.cm.jet
fig, ax = plt.subplots(figsize=(10,8))

cax = ax.pcolormesh([20,30,40], [1,2,5,6,12,13], 
                                     np.array([[1,2,5], #1
                                               [0,2,0], #2
                                               [1,2,3], #5
                                               [2,2,0], #6
                                               [3,2,3], #12
                                               [4,2,0]]), #13
                    cmap=cmap, alpha=1)
ax.set_xticks(range(20,41,10))
ax.set_yticks(range(1,15))
cbar = fig.colorbar(cax)
cbar.ax.tick_params(labelsize=12)

字符串
此图中的结果:
x1c 0d1x的数据
这是怎么回事啊?我希望左下角的第一个条目从(20,1)到(30,2)--如果你把标签居中的话,它会这样做……但是沿着y轴向上(根据文档)应该从(20,2)到(30,5),而实际上没有。下一个应该从(5,20)开始,然后到(6,30),但还是不行!?!?我如何获得数据(颜色)以匹配我的x-y数组的边界???
真实的数据也在x中展示了这个问题。所以我一定没有正确使用它。

3mpgtkmj

3mpgtkmj1#

为X和Y提供的数字不仅仅是矩形的“上边缘”。数字是成对取的。因此,第一个括号的跨度是1到2,而不是0到1。你没有任何东西覆盖Y从0到1。
如果您将其更改为以下内容,则显示将变为您所期望的内容:

cax = ax.pcolormesh([10,20,30,40], [0,1,2,5,6,12,13],

字符串
输出:

相关问题