从折线图创建一维热图

问题描述 投票:0回答:1

是否可以根据折线图中的数据创建一维热图?即我希望 y 中的最高值代表热图中较暖的颜色。我附上了我希望它看起来像的热图示例图像以及我当前在线图中的数据。

一维热图和图表示例:

为了获取图像中显示的热图,我在 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)

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

matplotlib heatmap imshow linegraph
1个回答
24
投票

如果我们假设数据等距,则可以使用

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()

© www.soinside.com 2019 - 2024. All rights reserved.