1. 程式人生 > >一、python視覺化——熱力圖

一、python視覺化——熱力圖

熱力圖

1、利用熱力圖可以看資料表裡多個特徵兩兩的相似度。參考官方API引數及地址:

seaborn.heatmap(data, vmin=None, vmax=None,cmap=None, center=None, robust=False, annot=None, fmt=’.2g’, annot_kws=None,linewidths=0, linecolor=’white’, cbar=True, cbar_kws=None, cbar_ax=None,square=False, xticklabels=’auto’, yticklabels=’auto’, mask=None, ax=None,**kwargs)

(1)熱力圖輸入資料引數:

data:矩陣資料集,可以是numpy的陣列(array),也可以是pandas的DataFrame。如果是DataFrame,則df的index/column資訊會分別對應到heatmap的columns和rows,即pt.index是熱力圖的行標,pt.columns是熱力圖的列標

(2)熱力圖矩陣塊顏色引數:

vmax,vmin:分別是熱力圖的顏色取值最大和最小範圍,預設是根據data資料表裡的取值確定
cmap:從數字到色彩空間的對映,取值是matplotlib包裡的colormap名稱或顏色物件,或者表示顏色的列表;改引數預設值:根據center引數設定
center

:資料表取值有差異時,設定熱力圖的色彩中心對齊值;通過設定center值,可以調整生成的影象顏色的整體深淺;設定center資料時,如果有資料溢位,則手動設定的vmax、vmin會自動改變
robust:預設取值False;如果是False,且沒設定vmin和vmax的值,熱力圖的顏色對映範圍根據具有魯棒性的分位數設定,而不是用極值設定

(3)熱力圖矩陣塊註釋引數:

annot(annotate的縮寫):預設取值False;如果是True,在熱力圖每個方格寫入資料;如果是矩陣,在熱力圖每個方格寫入該矩陣對應位置資料
fmt:字串格式程式碼,矩陣上標識數字的資料格式,比如保留小數點後幾位數字
annot_kws

:預設取值False;如果是True,設定熱力圖矩陣上數字的大小顏色字型,matplotlib包text類下的字型設定;官方文件:

(4)熱力圖矩陣塊之間間隔及間隔線引數:

linewidths:定義熱力圖裡“表示兩兩特徵關係的矩陣小塊”之間的間隔大小
linecolor:切分熱力圖上每個矩陣小塊的線的顏色,預設值是’white’

(5)熱力圖顏色刻度條引數:

cbar:是否在熱力圖側邊繪製顏色刻度條,預設值是True
cbar_kws:熱力圖側邊繪製顏色刻度條時,相關字型設定,預設值是None
cbar_ax:熱力圖側邊繪製顏色刻度條時,刻度條位置設定,預設值是None

(6)square:設定熱力圖矩陣小塊形狀,預設值是False

xticklabels, yticklabels:xticklabels控制每列標籤名的輸出;yticklabels控制每行標籤名的輸出。預設值是auto。如果是True,則以DataFrame的列名作為標籤名。如果是False,則不新增行標籤名。如果是列表,則標籤名改為列表中給的內容。如果是整數K,則在圖上每隔K個標籤進行一次標註。 如果是auto,則自動選擇標籤的標註間距,將標籤名不重疊的部分(或全部)輸出
mask:控制某個矩陣塊是否顯示出來。預設值是None。如果是布林型的DataFrame,則將DataFrame裡True的位置用白色覆蓋掉
ax:設定作圖的座標軸,一般畫多個子圖時需要修改不同的子圖的該值
**kwargs:All other keyword arguments are passed to ax.pcolormesh

熱力圖矩陣塊顏色引數

#cmap(顏色)

import matplotlib.pyplot as plt
% matplotlib inline

f, (ax1,ax2) = plt.subplots(figsize = (6,4),nrows=2)

# cmap用cubehelix map顏色
cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)
sns.heatmap(pt, linewidths = 0.05, ax = ax1, vmax=900, vmin=0, cmap=cmap)
ax1.set_title('cubehelix map')
ax1.set_xlabel('')
ax1.set_xticklabels([]) #設定x軸圖例為空值
ax1.set_ylabel('kind')

# cmap用matplotlib colormap
sns.heatmap(pt, linewidths = 0.05, ax = ax2, vmax=900, vmin=0, cmap='rainbow') 
# rainbow為 matplotlib 的colormap名稱
ax2.set_title('matplotlib colormap')
ax2.set_xlabel('region')
ax2.set_ylabel('kind')

這裡寫圖片描述

#center的用法(顏色)

f, (ax1,ax2) = plt.subplots(figsize = (6, 4),nrows=2)

cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)
sns.heatmap(pt, linewidths = 0.05, ax = ax1, cmap=cmap, center=None )
ax1.set_title('center=None')
ax1.set_xlabel('')
ax1.set_xticklabels([]) #設定x軸圖例為空值
ax1.set_ylabel('kind')

# 當center設定小於資料的均值時,生成的圖片顏色要向0值代表的顏色一段偏移
sns.heatmap(pt, linewidths = 0.05, ax = ax2, cmap=cmap, center=200)   
ax2.set_title('center=3000')
ax2.set_xlabel('region')
ax2.set_ylabel('kind')

這裡寫圖片描述

#robust的用法(顏色)

f, (ax1,ax2) = plt.subplots(figsize = (6,4),nrows=2)

cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)

sns.heatmap(pt, linewidths = 0.05, ax = ax1, cmap=cmap, center=None, robust=False )
ax1.set_title('robust=False')
ax1.set_xlabel('')
ax1.set_xticklabels([]) #設定x軸圖例為空值
ax1.set_ylabel('kind')

sns.heatmap(pt, linewidths = 0.05, ax = ax2, cmap=cmap, center=None, robust=True ) 
ax2.set_title('robust=True')
ax2.set_xlabel('region')
ax2.set_ylabel('kind')

這裡寫圖片描述

熱力圖矩陣塊註釋引數

#annot(矩陣上數字),annot_kws(矩陣上數字的大小顏色字型)matplotlib包text類下的字型設定

import numpy as np
np.random.seed(20180316)
x = np.random.randn(4, 4)

f, (ax1, ax2) = plt.subplots(figsize=(6,6),nrows=2)

sns.heatmap(x, annot=True, ax=ax1)

sns.heatmap(x, annot=True, ax=ax2, annot_kws={'size':9,'weight':'bold', 'color':'blue'})
# Keyword arguments for ax.text when annot is True.  http://stackoverflow.com/questions/35024475/seaborn-heatmap-key-words

這裡寫圖片描述

#fmt(字串格式程式碼,矩陣上標識數字的資料格式,比如保留小數點後幾位數字)

import numpy as np
np.random.seed(0)
x = np.random.randn(4,4)

f, (ax1, ax2) = plt.subplots(figsize=(6,6),nrows=2)

sns.heatmap(x, annot=True, ax=ax1)

sns.heatmap(x, annot=True, fmt='.1f', ax=ax2)

這裡寫圖片描述

熱力圖矩陣塊之間間隔及間隔線引數

#linewidths(矩陣小塊的間隔),linecolor(切分熱力圖矩陣小塊的線的顏色)

import matplotlib.pyplot as plt
f, ax = plt.subplots(figsize = (6,4))
cmap = sns.cubehelix_palette(start = 1, rot = 3, gamma=0.8, as_cmap = True)   
sns.heatmap(pt, cmap = cmap, linewidths = 0.05, linecolor= 'red', ax = ax)   
ax.set_title('Amounts per kind and region')
ax.set_xlabel('region')
ax.set_ylabel('kind')

這裡寫圖片描述

#xticklabels,yticklabels橫軸和縱軸的標籤名輸出

import matplotlib.pyplot as plt
f, (ax1,ax2) = plt.subplots(figsize = (5,5),nrows=2)

cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)

p1 = sns.heatmap(pt, ax=ax1, cmap=cmap, center=None, xticklabels=False)
ax1.set_title('xticklabels=None',fontsize=8)

p2 = sns.heatmap(pt, ax=ax2, cmap=cmap, center=None, xticklabels=2, yticklabels=list(range(5))) 
ax2.set_title('xticklabels=2, yticklabels is a list',fontsize=8)
ax2.set_xlabel('region')

這裡寫圖片描述

#mask對某些矩陣塊的顯示進行覆蓋

f, (ax1,ax2) = plt.subplots(figsize = (5,5),nrows=2)

cmap = sns.cubehelix_palette(start = 1.5, rot = 3, gamma=0.8, as_cmap = True)

p1 = sns.heatmap(pt, ax=ax1, cmap=cmap, xticklabels=False, mask=None)
ax1.set_title('mask=None')
ax1.set_ylabel('kind')

p2 = sns.heatmap(pt, ax=ax2, cmap=cmap, xticklabels=True, mask=(pt<800))   
#mask對pt進行布林型轉化,結果為True的位置用白色覆蓋
ax2.set_title('mask: boolean DataFrame')
ax2.set_xlabel('region')
ax2.set_ylabel('kind')

這裡寫圖片描述

用mask實現:突出顯示某些資料

f,(ax1,ax2) = plt.subplots(figsize=(4,6),nrows=2)
x = np.array([[1,2,3],[2,0,1],[-1,-2,0]])
sns.heatmap(x, annot=True, ax=ax1)
sns.heatmap(x, mask=x < 1, ax=ax2, annot=True, annot_kws={"weight": "bold"})   #把小於1的區域覆蓋掉

這裡寫圖片描述

本文為轉載,原地址:https://blog.csdn.net/cymy001/article/details/79576019。點選開啟連結

相關推薦

python視覺——力圖

熱力圖 1、利用熱力圖可以看資料表裡多個特徵兩兩的相似度。參考官方API引數及地址: seaborn.heatmap(data, vmin=None, vmax=None,cmap=None, center=None, robust=False, annot=None,

【邢不行|量化小講堂系列34-python量化入門】萬能Python | 交易策略買點賣點視覺

引言: 邢不行的系列帖子“量化小講堂”,通過實際案例教初學者使用python進行量化投資,瞭解行業研究方向,希望能對大家有幫助。 【歷史文章彙總】請點選此處 【必讀文章】EOS期現套利,一週時間,15%無風險收益          

Python視覺中的Matplotlib(6.散點圖以及詳細引數為圖形新增文字註釋箭頭以及它們的引數)

1. 散點圖        散點圖需要兩個引數x,y , 但此時,x不是表示x軸的刻度,而是每個點的橫軸座標!    散點圖 scatter() 引數說明:         &n

Python視覺中的Matplotlib(5.直方圖條形圖以及餅圖的用法和詳細的引數)

1.  直方圖   hist()      直方圖的引數只有一個X import matplotlib.pyplot as plt # 匯入繪圖模組 import numpy as np # 匯入需要生成資料的numpy模組 '

Python視覺中Matplotlib(4.三種設定樣式方法設定座標刻度以及標籤設定顯示出特殊字元)

1.三種設定方式   (1)向方法傳入關鍵字引數 上一節已經總結過,一直在使用   (2)對例項使用一系列的setter方法           具體的方法直接看程式碼  import matplotli

Python視覺中Matplotlib(3.線條的詳細樣式及線性儲存圖片plot的詳細風格和樣式)背景色點和線的詳細設定

1.修改線條的樣式: linestyle、color、marker(標記) ''' 顏色 color:修改顏色,可以簡寫成c 樣式 linestyle='--' 修改線條的樣式 可以簡寫成 ls 標註 marker : 標註 線寬 linewidth: 設

Python視覺中Matplotlib繪圖(2.設定範圍標籤標題圖例(詳細引數))

1.為繪製的圖新增範圍 import matplotlib.pyplot as plt # 匯入繪圖模組 import numpy as np # 匯入需要生成資料的numpy模組 '''新增範圍''' y = np.arange(0,10,1) plt.plo

python 視覺 散點圖。柱狀圖等高線

散點圖 import matplotlib.pyplot as plt import numpy as np #n個點 n = 1024 #平均值是0,方差是1 X = np.random.normal(0,1,n) Y = np.random.normal(0

python視覺Matplotlib 繪製】視覺圖片中顯示中文

# ----------------------顯示中文----神奇般的存在---------------- from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei'] # ----------------------

分形分形幾何資料視覺Python繪圖

本系列採用turtle、matplotlib、numpy這三個Python工具,以分形與計算機影象處理的經典演算法為例項,通過程式和影象,來幫助讀者一步步掌握Python繪圖和資料視覺化的方法和技巧,並且讓讀者感受到“ 龍枝屈曲競分形,瑰麗綺錯千萬狀”的分形魅力。 中國傳統中的『分形』 『分』是會意

python環境準備

選擇 eset ann 安裝 man 下載地址 load 下載 don 1.操作系統 操作系統:windowsserver2016; 2.python python版本:python-3.6.2-amd64(3.6.2 64位可執行版本);下載地址: https://

python特性+python安裝測試

追加 寫代碼 通過 直接 編寫代碼 str 系統 執行 令行 解釋性    當你使用C或者C++語言編寫程序時,需要通過編譯器將源代碼編譯成電腦能夠識別的語言(二進制機器碼)。當運行這些程序時候,連接器將會從硬盤中將編譯好的程序從硬盤中拷貝到內存中運行。   python:

Python隨筆()python基礎

python在pycharm下設置自己的模板:在File---settings---File and Code Templates---Python script 腳本裏添加:#!usr/bin/env python #-*- coding:utf-8 _*- """ @author:${USER} @fi

Python安裝與Pycharm使用入門

進入 epel源 targe ext width ngx enter date prefix 一、安裝Python 1、Linux下安裝 一般系統默認已安裝2.6.6版本,升級成2.7版本, 但 2.6 不能刪除,因為系統對它有依賴,epel源裏最新的也是2.6版本,所以以

python函數學習

zha 元祖 pytho 1=1 fun 參數 元素 否則 func 1. 定義函數 def 函數名(形參):     函數體     return xxx--------其下面的內容不再執行 ----------------------------------

三十python學習之Flask框架(三)檢視:路由上下文Flask-Script擴充套件

一、裝飾器路由的具體實現 1.Flask框架路由實現 Flask有兩大核心:Werkzeug和Jinja2 Werkzeug實現路由、除錯和Web伺服器閘道器介面 Jinja2實現了模板。 Werkzeug是一個遵循WSGI協議的python函式庫

利用Python視覺來檢視中國環保股上市公司!排名第一的居然是?

  1. 提取所有股票程式碼   1import tushare as ts 2# 獲取所有股票列表 3data = ts.get_stock_basics() 4print(data.head()) 5# 返回資料如下,所有列值可以參考:ht

python視覺互動庫dash

R有shiny,應該是非常好用的,python像shiny的互動視覺化的庫不多,dash其中之一,簡單實用,但整體似乎還不如shiny。 1安裝 pip install dash pip install dash-renderer pip install dash-html-

python視覺演算法執行進度(含輸出格式控制函式format用法)

使用PyPrind包實現演算法的進度條功能 在演算法執行過程中,使用PyPrind建立一個進度條物件,視覺化演算法的執行進度 官方地址:https://github.com/rasbt/pyprind 可以支援多種不同樣式的進度條顯示。 import pyprind import

Python視覺中的Matplotlib繪圖(1.畫圖,網格,子圖,畫正餘弦圖,座標軸界限,畫圓,)

1.一張基本的圖示包含的元素;    · x軸和y軸 以及他們的刻度線 、標籤、繪圖區域 import matplotlib.pyplot as plt # 匯入繪圖模組 import numpy as np # 匯入需要生成資料的num