2016-04-26 79 views
0

我有一個包含值和相應座標的矩陣,並希望爲給定座標繪製該矩陣的熱圖。一個工作的例子將是帶有指定座標點的熱圖

import numpy as np 
import matplotlib.pyplot as plt 

intensities=[[1,3,5],[2,4,6]] 

coords=[[[0,0],[1,0],[2,4]],[[2,1],[3,5],[6,1]]] 

plt.pcolormesh(intensities) 

但是,我想要的點繪製在由座標給出的座標。不幸的是,座標不能表示爲兩個數組。

我可以看出,pcolormesh和類似的工具可能是錯誤的工具,因爲它們用矩形填充。我不關心用於填充空間的多邊形的特定形狀,因爲我將有足夠多的點來使效果不可見。

問題出現在嘗試後期處理圖像。一個圖形被繪製爲對應於一個非正交的參考系,我希望看到如果參考系是正交的,它會是什麼樣子。

+0

'強度'如何對應'coords'。你是否打算將'coords'定義爲長度爲2的4個子列表,如'coords = [[0,0],[1,0],[2,1],[3,5]]' ? (在OP中,前兩個子列表周圍似乎有太多的括號......) – unutbu

+0

道歉,我現在糾正了這個問題。這意味着coords [a,b,:]給出強度的x,y座標[a,b]。如果有必要,我還可以找到其他方法來編寫這些內容。 – Shinja

回答

0

Per the comments,coords[a, b,:]給出所有有效的a,bintensities[a, b]有關的x,y座標。因此,我們可以摘掉xy協調與

x = coords[..., 0].ravel() 
y = coords[..., 1].ravel() 

和相應的顏色會由

c = intensities.ravel() 

import numpy as np 
import matplotlib.pyplot as plt 

intensities = np.array([[1, 3, 5], [2, 4, 6]]) 
coords = np.array([[[0, 0], [1, 0], [2, 4]], [[2, 1], [3, 5], [6, 1]]]) 

x = coords[..., 0].ravel() 
y = coords[..., 1].ravel() 
c = intensities.ravel() 
plt.scatter(x, y, c=c, s=200) 
plt.colorbar() 
plt.show() 
給予

enter image description here

s=200控件的大小點。我使用了很大的價值來讓示例中的幾個點更加明顯。如果你有很多積分,你當然會想要一個更小的數字。

+0

如果我在實際情節中將點數足夠小,就可以準確顯示我想要的結果。 – Shinja