2016-06-15 36 views
0

3名单的热图,我有3个Python列表:x = [x0, x1, x2, ..., xn]y = [y0, y1, y2, ..., yn]v = [v0, v1, v2, ..., vn],我需要做的是可视化通过创建一个热图中的数据是什么,在此,协调(x[k], y[k]),价值v[k]可视化时,结果可能与GnuPlot Heatmap XYZ中的结果类似。由于系统约束,我不能使用除numpy和matplotlib之外的其他第三方工具。创建使用matplotlib和numpy的

我发现了一些相关主题(Heatmap in matplotlib with pcolor?,Generate a heatmap in MatPlotLib using a scatter data set),但似乎没有解决同样的问题。

回答

1

如果编码矩阵不是足够大的内存,它可以很容易地使用数组切片转换为密numpy的数组:

import numpy as np 
import matplotlib.pyplot as plt 

x = [1, 0] 
y = [0, 1] 
v = [2, 3] 

M = np.zeros((max(x) + 1, max(y) + 1)) 
M[x, y] = v 

fig, ax = plt.subplots() 
ax.matshow(M) 

plot

+1

我想补充一点,你应该看看'imshow '(不知道'matshow'是否有颜色条,但如果是的话就使用它)并添加一个颜色条。看看[这个例子](http://matplotlib.org/1.3.1/examples/pylab_examples/colorbar_tick_labelling_demo.html) – Engineero

+0

谢谢cel!但是这可能会失去所有的坐标信息。而x,y,z的数据可能不是整数。 – Dracarys

+0

@WonderHAO,哦,在这种情况下,您可能必须首先将您的数据离散化为垃圾箱。因为'numpy.digitize'会派上用场。然后,您只需总结每个垃圾箱中的z分数,并用'imshow'绘制您获得的矩阵。 – cel