日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

        歡迎訪問 生活随笔!

        生活随笔

        當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

        编程问答

        matplotlib 热力图_5分钟入门 Seaborn 热力图可视化

        發布時間:2023/12/10 编程问答 28 豆豆
        生活随笔 收集整理的這篇文章主要介紹了 matplotlib 热力图_5分钟入门 Seaborn 热力图可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

        Seaborn是基于matplotlib的Python可視化庫。它提供了一個高級界面來繪制有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精致。

        注:所有代碼均在IPython notebook中實現

        heatmap 熱力圖

        熱力圖在實際中常用于展示一組變量的相關系數矩陣,在展示列聯表的數據分布上也有較大的用途,通過熱力圖我們可以非常直觀地感受到數值大小的差異狀況。heatmap的API如下所示:

        下面將演示這些主要參數的用法,第一件事還是先導入相關的packages。

        1import?seaborn?as?sns
        2%matplotlib?inline
        3sns.set(font_scale=1.5)

        本次演示采用的數據集是Seaborn中內置的flights航班數據集

        1#導入數據集后按年月兩個維度進行數據透視
        2data=sns.load_dataset("flights")\
        3????????.pivot("month","year","passengers")?
        4data.head()?

        如上圖所示,dataframe中的數據代表了1949年-1960年每個月的航班乘客數量,接下來熱力圖就隆重登場啦!

        1sns.set_context({"figure.figsize":(8,8)})
        2sns.heatmap(data=data,square=True)?
        3#可以看到熱力圖主要展示的是二維數據的數據關系
        4#不同大小的值對應不同的顏色深淺

        熱力圖的右側是顏色帶,上面代表了數值到顏色的映射,數值由小到大對應色彩由暗到亮。從上面的heatmap中我們可以得到兩層信息,一是隨著時間的推移,飛機的乘客數量是在逐步增多的,二是航班的乘坐旺季在七月和八月份。下面就具體的參數進行演示。

        vmax:設置顏色帶的最大值vmin:設置顏色帶的最小值

        1sns.heatmap(data=data,vmin=200,
        2????????????vmax=500)

        可以看到右側的顏色帶最大最小值變了,而heatmap中顏色映射關系也會隨之調整,將本圖和上面的圖進行對比便一目了然。

        cmap:設置顏色帶的色系

        1sns.heatmap(data=data,cmap="RdBu_r")

        好像變好看了?

        center:設置顏色帶的分界線

        1sns.heatmap(data=data,cmap="RdBu_r",
        2????????????center=300)

        ????

        細心的朋友可以察覺到顏色帶上色彩兩級的分界線變成了300

        annot:是否顯示數值注釋

        1sns.heatmap(data=data,annot=True,
        2????????????cmap="RdBu_r")

        怎么回事?亂碼了嗎?其實數值注釋默認顯示的是科學記數法的數值,我們得把數值進行格式化,這就用到了下面的參數。

        fmt:format的縮寫,設置數值的格式化形式

        1sns.heatmap(data=data,annot=True,
        2????????????fmt="d",cmap="RdBu_r")
        3#foramt為int類型

        linewidths:控制每個小方格之間的間距

        1sns.heatmap(data=data,annot=True,
        2????????????fmt="d",linewidths=0.3,
        3????????????cmap="RdBu_r")?
        4#可以看到每個小方格之產生了間隙

        linecolor:控制分割線的顏色

        1sns.heatmap(data=data,annot=True,
        2????????????fmt="d",linewidths=0.3,
        3????????????linecolor="grey",cmap="RdBu_r")
        4#原來的白色間隙變成了灰色間隙

        cbar_kws:關于顏色帶的設置

        1sns.heatmap(data=data,annot=True,
        2????????????fmt="d",cmap="RdBu_r",
        3????????????cbar_kws={"orientation":"horizontal"})??
        4#橫向顯示顏色幫

        mask:傳入布爾型矩陣,若為矩陣內為True,則熱力圖相應的位置的數據將會被屏蔽掉(常用在繪制相關系數矩陣圖)

        1import?numpy?as?np
        2#隨機生成一個200行10列的數據集
        3data_new?=?np.random.randn(200,10)
        4
        5#求出這個數據集的相關系數矩陣
        6corr?=?np.corrcoef(data_new,rowvar=False)
        7
        8#以corr的形狀生成一個全為0的矩陣
        9mask?=?np.zeros_like(corr)
        10
        11#將mask的對角線及以上設置為True
        12#這部分就是對應要被遮掉的部分
        13mask[np.triu_indices_from(mask)]?=?True
        14
        15with?sns.axes_style("white"):
        16????sns.heatmap(corr,?mask=mask,?vmax=0.3,?
        17????????????????annot=True,cmap="RdBu_r")

        如果大家對上面的代碼流程不大了解,可以把mask打印出來看看

        參照mask和上面繪制的圖,應該就很容易理解了,mask中為1的部分,就是要被蓋掉的部分。演示到此為止,想更深入的學習可以自行查閱官方文檔!

        ▼ 點擊成為社區注冊會員? ? ? 喜歡文章,點個在看

        總結

        以上是生活随笔為你收集整理的matplotlib 热力图_5分钟入门 Seaborn 热力图可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。