天天看點

《Python資料可視化程式設計實戰》——5.3 建立3D直方圖

本節書摘來自異步社群《python資料可視化程式設計實戰》一書中的第5章,第5.3節,作者[愛爾蘭]igor milovanović ,颛青山 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

像3d柱狀圖一樣,我們可能想建立3d直方圖。3d直方圖可以用來很容易地識别3個獨立變量之間的相關性。可以用它們來從圖像中提取資訊,其中第三個次元可以是所分析的圖像的(x, y)空間通道的強度。

本節将學習如何建立3d直方圖。

回顧一下,直方圖表示的是一些值在特定列(通常叫做“bin”)中的發生率。那麼,三維直方圖表示的是在一個網格中的發生率。網格是矩形的,表示的是在兩列中關于兩個變量的發生率。

在這個計算過程中,我們将進行如下操作。

1.使用numpy,因為其擁有計算兩個變量的直方圖的函數。

2.用正态分布函數生成x和y,但是給它們提供不同的參數,以便能區分結果直方圖的互相關系。

3.用相同的資料集合繪制散點圖,展示散點圖和3d直方圖顯示上的差異。

下面是實作上述步驟的代碼。

上述代碼生成如圖5-3所示的圖形。

《Python資料可視化程式設計實戰》——5.3 建立3D直方圖

我們用np.histogram2d生成了一個直方圖,該方法傳回了直方圖(hist)、x bin邊界和y bin邊界。

bar3d函數需要x, y空間的坐标,是以需要計算出一般的矩陣坐标,對此我們使用np.meshgrid函數把x和y位置的向量合并到2d空間網格中(矩陣)。我們可以使用它在xy平面位置上繪制矩形條。

變量dx和dy表示每一個矩形條底部的寬度,我們想把它設定為常數,是以我們為xy平面的每一個位置給定的值為0.1 個點的寬度。

z軸上的值(dz)實際上是計算機直方圖(在變量hist中),它表示在一個特定的bin中一般的x和y樣本的個數。

接下來在散點圖(圖5-3)中顯示了一個2d坐标軸,也呈現了兩組相似但起始參數不同的分布間的互相關系。

有時候,3d給予我們更多的資訊,并以一個更好的方式讓我們來了解資料所包含的内容。然而在更多情況下,3d可視化比2d更加讓人感到迷惑,是以在舍棄2d選擇3d之前最好慎重考慮。