利用Python實現(xiàn)熱力圖的繪制
1. 引言
熱力圖,是一種通過對色塊著色來顯示數(shù)據(jù)的統(tǒng)計圖表。繪圖時,需指定顏色映射的規(guī)則。例如,較大的值由較深的顏色表示,較小的值由較淺的顏色表示;較大的值由偏暖的顏色表示,較小的值由較冷的顏色表示,等等。
本文主要用Python來實現(xiàn)熱力圖的制作,樣例如下:
閑話少說,我們直接開始吧!
2. 讀取圖像
首先,我們來讀取樣例圖像,并對其進行相應(yīng)的crop
操作。
樣例代碼如下:
import numpy as np import matplotlib.pyplot as plt import skimage.io as io img = plt.imread("butterfly-7320158_960_720.jpg") # crop img_cut = img[147:447,:,:] plt.figure() plt.imshow(img_cut)
運行后,得到結(jié)果如下:
3. 圖像灰度化
由于熱力圖主要用于可視化二維矩陣,所以我們需要將彩色圖轉(zhuǎn)化為灰度圖,代碼如下:
from skimage.color import rgb2gray gray_img = rgb2gray(img_cut) plt.imshow(gray_img,cmap='gray')
運行結(jié)果如下:
4. 像素化效果
這一步的操作主要是為了使圖像看起來像像素化的藝術(shù)品。我們首先將圖像劃分為非重疊block
塊。我們將block
塊的大小劃分的越大,像素化程度看起來越高。
對于每個block塊,我們計算該塊中一些代表值。在這里,我們可以使用整個塊的最小值,最大值或中值。這里僅展示最小值的情形,代碼如下:
from skimage import util # select box size block_shape = (10, 10) view = util.view_as_blocks(gray_img, block_shape) # collapse the last two dimensions in one flatten_view = view.reshape(view.shape[0], view.shape[1], -1) # choose min within box min_view = np.min(flatten_view, axis=2) plt.imshow(min_view,cmap='gray')
運行結(jié)果如下:
5. 為熱力圖選擇調(diào)色板
這一步是我們創(chuàng)作熱力圖藝術(shù)效果自由度最高的步驟。seaborn
調(diào)色板可能是一個很好的選擇。我們來看一些不同風格的效果圖:
import seaborn as sns # save figure for LinkedIn recommended size (2000 width, 600 height) my_dpi=96 plt.figure(figsize=(2000/my_dpi, 600/my_dpi), dpi=my_dpi) sns.heatmap(max_view,xticklabels=False,yticklabels=False,cmap="coolwarm",cbar=False) plt.savefig("coolwarm.png",bbox_inches='tight')
結(jié)果如下:
此外,viridis風格結(jié)果如下:
Spectral風格結(jié)果如下:
到此這篇關(guān)于利用Python實現(xiàn)熱力圖的繪制的文章就介紹到這了,更多相關(guān)Python熱力圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用scrapy采集數(shù)據(jù)過程中放回下載過大頁面的方法
這篇文章主要介紹了Python使用scrapy采集數(shù)據(jù)過程中放回下載過大頁面的方法,可實現(xiàn)限制下載過大頁面的功能,非常具有實用價值,需要的朋友可以參考下2015-04-04python爬蟲框架scrapy實戰(zhàn)之爬取京東商城進階篇
這篇文章主要給大家介紹了利用python爬蟲框架scrapy爬取京東商城的相關(guān)資料,文中給出了詳細的代碼介紹供大家參考學習,并在文末給出了完整的代碼,需要的朋友們可以參考學習,下面來一起看看吧。2017-04-04