matplotlib 从折线图创建1D热图

4dbbbstv  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(201)

是否可以从线图中的数据创建一个1D热图?即,我希望y中的最高值表示热图中的暖色。我已经附上了热图的示例图像,我希望它看起来像我目前在线图中的数据。
1D热图和图形示例:

为了获得图中的热图,我使用了以下Python代码和matplotlib.pyplot:

heatmap, xedges, yedges = np.histogram2d(x, y, bins=(np.linspace(0,length_track,length_track+1),1))
extent = [0, length_track+1, 0, 50]
plt.imshow(heatmap.T, extent=extent, origin='lower', cmap='jet',vmin=0,vmax=None)

但我相信只有当数据被表示为散点图时,这才有效。

rjzwgtxy

rjzwgtxy1#

如果我们假设数据是等间距的,可以使用imshow图来重新创建问题的图。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
plt.rcParams["figure.figsize"] = 5,2

x = np.linspace(-3,3)
y = np.cumsum(np.random.randn(50))+6

fig, (ax,ax2) = plt.subplots(nrows=2, sharex=True)

extent = [x[0]-(x[1]-x[0])/2., x[-1]+(x[1]-x[0])/2.,0,1]
ax.imshow(y[np.newaxis,:], cmap="plasma", aspect="auto", extent=extent)
ax.set_yticks([])
ax.set_xlim(extent[0], extent[1])

ax2.plot(x,y)

plt.tight_layout()
plt.show()

相关问题