pandas可視化(5)【官方文檔解讀】-- Hexagonal Bin Plot(我翻譯為六角形箱體圖)、餅圖
前言
前文傳送門:
pandas可視化(1)【官方文檔解讀】--基礎繪圖
pandas可視化(2)【官方文檔解讀】-- 條形圖、直方圖
pandas可視化(3)【官方文檔解讀】-- 箱線圖
pandas可視化(4)【官方文檔解讀】-- 區域圖、散點圖
如繪圖過程中,中文字體和負號顯示有問題,可以參照如下鏈接修改配置參數設置正常顯示:
https://www.joinquant.com/post/441
六角形箱體圖
import matplotlibnimport matplotlib.pyplot as pltnimport pandas as pdnimport numpy as npnmatplotlib.style.use(ggplot)#使用ggplot樣式n%matplotlib inlinen
註:如前一章,先導入必要的模塊和繪圖的數據準備
六角形箱體圖
你可以使用DataFrame.plot.hexbin()創建六邊形圖形圖。
如果您的數據太密集,可以單獨繪製每個點,六角形箱體圖可以是散點圖的有用替代方法。
df = pd.DataFrame(np.random.randn(1000, 2), columns=[a, b])ndf.plot.hexbin(x=a, y=b, gridsize=10)n
註:左邊坐標表示的是值的分布(這個圖是二維標準正態分布)
右邊是數據量大小與顏色的對比,gridsize=10指的是大小,我們將其調為25:
df = pd.DataFrame(np.random.randn(1000, 2), columns=[a, b])ndf.plot.hexbin(x=a, y=b, gridsize=25)n
我們接下來不做二維正態分布的圖,加一個干擾:
df = pd.DataFrame(np.random.randn(1000, 2), columns=[a, b])ndf[b] = df[b] + np.arange(1000)ndf.plot.hexbin(x=a, y=b, gridsize=25)n
一個有用的關鍵字參數是gridsize; 它控制x方向的六邊形數量,並且默認為100.較大的格柵意味著更多的較小的分區。
默認情況下,計算每個(x,y)點周圍計數的直方圖。 可以通過將值傳遞給C和reduce_C_function參數來指定替代聚合。
C指定每個(x,y)點處的值,reduce_C_function是一個參數的函數,將一個bin中的所有值都減少為一個數字(例如,mean,max,sum,std)。
在該示例中,位置由列a和b給出,而值由列z給出。 bins與numpy的最大功能相結合。
df = pd.DataFrame(np.random.randn(1000, 2), columns=[a, b])ndf[b] = df[b] = df[b] + np.arange(1000)ndf[z] = np.random.uniform(0, 3, 1000)ndf.plot.hexbin(x=a, y=b, C=z, reduce_C_function=np.max,n gridsize=20)n
註:這裡z為在0-3上的均勻分布
餅圖
可以使用DataFrame.plot.pie()或Series.plot.pie()創建餅圖。
如果您的數據包含任何NaN,它們將自動填滿0.如果數據中有任何負值,則會引發ValueError。
series = pd.Series(3 * np.random.rand(4), index=[a, b, c, d], name=series)nseries.plot.pie(figsize=(6, 6))n
註:餅圖大小為6x6,如果長寬不一樣,畫出來是類似橢圓的
對於餅圖,最好使用平方數字,具有相等的長寬比。
可以創建具有相同寬度和高度的圖形,或者通過在返回的軸對象上調用ax.set_aspect(equal)來強制繪製後的寬高比相等。
請注意,使用DataFrame的餅圖需要您通過y參數或subplots = True指定目標列。
指定y時,將繪製所選列的餅圖。 如果指定subplots= True,則每列的餅圖將繪製為子圖。
默認情況下,每個餅圖將繪製一個圖例; 指定legend = False隱藏它。
df = pd.DataFrame(3 * np.random.rand(4, 2), index=[a, b, c, d], columns=[x, y])ndf.plot.pie(subplots=True, figsize=(9,4))n
註:子圖繪製,默認顯示圖例,可以自己指定整個圖的長寬大小(這裡我選取9x4最後效果比較好)
您可以使用標籤和顏色關鍵字來指定每塊的標籤和顏色。
如果要隱藏標籤,請指定標籤=無。 如果指定了fontsize,該值將應用於標籤。
另外,可以使用matplotlib.pyplot.pie()支持的其他關鍵字。
series.plot.pie(labels=[AA, BB, CC, DD], colors=[r, g, b, c],n autopct=%.2f, fontsize=15, figsize=(6, 6))n
註:colors指定每塊對應的顏色,autopct是自動計算百分比顯示,fontsize是百分比字體顯示的大小
如果您傳遞總和小於1.0的值,則matplotlib繪製半圓。
series = pd.Series([0.1] * 4, index=[a, b, c, d], name=series2)nseries.plot.pie(figsize=(6, 6))n
註:
是快速創建列表的一種方式
pandas繪製六角形箱體圖和餅圖圖到此結束
文中所寫如有謬誤請指出,感謝!
參考文獻
http://pandas.pydata.org/pandas-docs/stable/visualization.html#
作者:王大偉 Python愛好者社區唯一小編,請勿轉載,謝謝。
出處:pandas可視化(5)【官方文檔解讀】-- Hexagonal Bin Plot(我翻譯為六角形箱體圖)、餅圖配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享 公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。
推薦閱讀: