Python pcolormesh在matplotlib中重新缩放轴

Python pcolormesh在matplotlib中重新缩放轴,python,matplotlib,Python,Matplotlib,我有一个凌乱的代码从下面粘贴的模拟数据创建一个热图。在代码中,heatdataraw是一个包含模拟数据的m x n数组,其中n是模拟的数量,m是单个模拟中的时间步数 elsinrow = len(heatdataraw[0]) ts = range (elsinrow) times = [] for x in range (len(heatdataraw)) : times.append(ts) times = np.array(times) #times = times * tim

我有一个凌乱的代码从下面粘贴的模拟数据创建一个热图。在代码中,
heatdataraw
是一个包含模拟数据的m x n数组,其中
n
是模拟的数量,
m
是单个模拟中的时间步数

elsinrow = len(heatdataraw[0])
ts = range (elsinrow)
times = []

for x in range (len(heatdataraw)) :
    times.append(ts)

times = np.array(times)
#times = times * timescale
times = times.flatten()
heatdata = heatdataraw.flatten()

binsize = 100
xbins = np.arange(0,elsinrow,binsize)
ybins = np.linspace(-1.0,1.0,elsinrow/binsize)
    
heatdatabinned = stats.binned_statistic_2d(times,heatdata,heatdata,'count',bins=[xbins,ybins])

heatdatabinned = np.array(heatdatabinned.statistic)
heatdatabinned = heatdatabinned.T
    
xbins = xbins + (xbins[1]-xbins[0])/2
ybins = ybins + (ybins[1]-ybins[0])/2

xbins = xbins[:-1]
ybins = ybins[:-1]

heatmap, ax = plt.subplots()

im = ax.pcolormesh(xbins,ybins,heatdatabinned,cmap='inferno',vmin=0,vmax=binsize*1)
ax.set(xlabel='timestep', ylabel='$\\langle$ state $\\rangle$')

cbar = heatmap.colorbar(im)
cbar.ax.set_ylabel('counts')

heatmap.savefig('heatmap.png')
此时,此图的x轴将显示一些0到N的整数,其中N是时间步数。这是不幸的,因为我想用实际时间代替x轴。因此,我想(最好)重新缩放x轴,或者(可能)重新缩放x数据。我两个都没有做到。到目前为止,我最直观的尝试就是使用timestep(代码中的注释行)重新缩放x数据


有什么建议吗?

我想出了一个解决方案,实际上并不是对这个问题的正确答案,但它解决了我在这个特殊情况下的问题

如果我们将pcolormesh更改为imshow,那么我们可以使用
范围
,如下所示:

im = ax.imshow(heatdatabinned,cmap='inferno',vmin=0,vmax=binsize*1,extent=[xmin,xmax,ymin,ymax],interpolation='nearest',origin='lower',aspect='auto')
其中
im=ax.imshow(…)
替代
im=ax.pcolormesh(…)

回到论文写作上来