我有一些資料是 5x10 網格上每個點的讀數數量,格式為;
X = [1, 2, 3, 4,..., 5]
Y = [1, 1, 1, 1,...,10]
Z = [9,8,14,0,89,...,0]
我想從上面將其繪制為熱圖/密度圖,但matplotlib我發現的所有圖表(包括輪廓)都需要 Z 的二維陣列,我不明白為什么。
編輯;
我現在已經收集了我想要繪制的實際坐標,這些坐標不像我上面的那樣有規律;
X = [8,7,7,7,8,8,8,9,9.5,9.5,9.5,11,11,11,10.5,
10.5,10.5,10.5,9,9,8, 8,8,8,6.5,6.5,1,2.5,4.5,
4.5,2,2,2,3,3,3,4,4.5,4.5,4.5,4.5,3.5,2.5,2.5,
1,1,1,2,2,2]
Y = [5.5,7.5,8,9,9,8,7.5,6,6.5,8,9,9,8,6.5,5.5,
5,3.5,2,2,1,2,3.5,5,1,1,2,4.5,4.5,4.5,4,3,
2,1,1,2,3,4.5,3.5,2.5,1.5,1,5.5,5.5,6,7,8,9,
9,8,7]
z = [286,257,75,38,785,3074,1878,1212,2501,1518,419,33,
3343,1808,3233,5943,10511,3593,1086,139,565,61,61,
189,155,105,120,225,682,416,30632,2035,165,6777,
7223,465,2510,7128,2296,1659,1358,204,295,854,7838,
122,5206,6516,221,282]
據我了解,您不能在 a 中使用浮點數,np.array因此我嘗試將所有值乘以 10,以便它們都是整數,但我仍然遇到一些問題。我是否正在嘗試做一些不起作用的事情?
uj5u.com熱心網友回復:
他們期望一個二維陣列,因為他們使用“行”和“列”來設定值的位置。例如,如果array[2, 3] = 5,則當 x 為 2 且 y 為 3 時,熱圖將使用值 5。
因此,讓我們嘗試將當前資料轉換為單個陣列:
>>> array = np.empty((len(set(X)), len(set(Y))))
>>> for x, y, z in zip(X, Y, Z):
array[x-1, y-1] = z
如果X和Y是np.arrays,你也可以這樣做(所以
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/438514.html
標籤:Python matplotlib 热图
