具有不同y轴的热图

时间:2014-06-27 20:09:19

标签: python matplotlib plot heatmap

我想创建一个像this图像上半部分的可视化。基本上,热图是每个时间点都有固定数量的组件,但这些组件通过标签(我可以提供)锚定到y轴,而不是热像图矩阵中的第一个索引。

我知道pcolormesh,但这似乎没有给我我寻求的y轴功能。

最后,我也对R中的解决方案持开放态度,尽管Python选项更适合

1 个答案:

答案 0 :(得分:1)

我不完全确定我是否理解你的意思,但通过查看你已经链接的图片,你可能最好使用自己动手的解决方案。

首先,您需要创建一个包含热图值的数组,以便每个标签都有行,每个时隙有一列。用nans填充数组,然后将所有热图值写入正确的位置。

然后你需要欺骗imshow一点来缩放并以正确的方式显示图像。

例如:

# create some masked data
a=cumsum(random.random((20,200)), axis=0)
X,Y=meshgrid(arange(a.shape[1]),arange(a.shape[0]))
a[Y<15*sin(X/50.)]=nan
a[Y>10+15*sin(X/50.)]=nan

# draw the image along with some curves
imshow(a,interpolation='nearest',origin='lower',extent=[-2,2,0,3])
xd = linspace(-2, 2, 200)
yd = 1 + .1 * cumsum(random.random(200)-.5) 
plot(xd, yd,'w',linewidth=3)
plot(xd, yd,'k',linewidth=1)
axis('normal')

给出:

enter image description here