溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python使用matplotlib繪制熱圖

發(fā)布時間:2020-09-14 09:24:22 來源:腳本之家 閱讀:257 作者:coder_Gray 欄目:開發(fā)技術

python常用的繪圖庫就是matplotlib,今天在給公司繪圖時,偶然間發(fā)現(xiàn)matplotlib可以繪制熱圖,并且十分簡潔,拿出來跟大家分享一下。(由于涉及到公司數(shù)據(jù)問題,這里采用隨機數(shù)生成數(shù)據(jù)進行實驗)

import random
from matplotlib import pyplot as plt
from matplotlib import cm
from matplotlib import axes
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='/Library/Fonts/Songti.ttc')
 
def draw():
 #定義熱圖的橫縱坐標
 xLabel = ['A','B','C','D','E']
 yLabel = ['1','2','3','4','5']
 
 #準備數(shù)據(jù)階段,利用random生成二維數(shù)據(jù)(5*5)
 data = []
 for i in range(5):
  temp = []
  for j in range(5):
   k = random.randint(0,100)
   temp.append(k)
  data.append(temp)
 
 #作圖階段
 fig = plt.figure()
 #定義畫布為1*1個劃分,并在第1個位置上進行作圖
 ax = fig.add_subplot(111)
 #定義橫縱坐標的刻度
 ax.set_yticks(range(len(yLabel)))
 ax.set_yticklabels(yLabel, fontproperties=font)
 ax.set_xticks(range(len(xLabel)))
 ax.set_xticklabels(xLabel)
 #作圖并選擇熱圖的顏色填充風格,這里選擇hot
 im = ax.imshow(data, cmap=plt.cm.hot_r)
 #增加右側的顏色刻度條
 plt.colorbar(im)
 #增加標題
 plt.title("This is a title", fontproperties=font)
 #show
 plt.show()
 
d = draw()

效果圖如下:

python使用matplotlib繪制熱圖

為了更清晰地看出二維數(shù)值矩陣與熱圖之間的對應關系,我們輸出二維矩陣:

[[17, 96, 11, 99, 83], [18, 17, 58, 18, 80], [87, 79, 15, 53, 4], [86, 53, 48, 36, 23], [25, 4, 94, 100, 71]]

從對應關系我們可以看出,圖像的左上角為坐標原點,第一行對應的二維矩陣中的第一行數(shù)據(jù),以此類推。
同時我們可以看出數(shù)值越大的單元,對應熱圖中的顏色越深。其實這是一個可選項,只需要改變im = ax.imshow(data, cmap=plt.cm.hot_r)中的參數(shù)cmap為hot_r,其中_r的意思是就是按照顏色越深,數(shù)值越大,如果想數(shù)值越大,顏色越淺,只需要去掉_r,直接為hot就行。同時這個hot是熱圖配色的其中一個主題,主題色參數(shù)可選:

  • hot 從黑平滑過度到紅、橙色和黃色的背景色,然后到白色。
  • cool 包含青綠色和品紅色的陰影色。從青綠色平滑變化到品紅色。
  • gray 返回線性灰度色圖。
  • bone 具有較高的藍色成分的灰度色圖。該色圖用于對灰度圖添加電子的視圖。
  • white 全白的單色色圖。
  • spring 包含品紅和黃的陰影顏色。
  • summer 包含綠和黃的陰影顏色。
  • autumn 從紅色平滑變化到橙色,然后到黃色。
  • winter 包含藍和綠的陰影色。

右側的顏色刻度條colorbar也是可選的,如果不寫就不會顯示

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI