2016-06-15 34 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