天天看點

Python colormap庫的安裝和使用

Python colormap庫的安裝和使用

colormap庫是Python中的一個對顔色進行處理的第三方庫,常用于對RGB(red,green,blue三原色的縮寫,真彩圖像)顔色的轉換,生成顔色圖等。

pypi文檔位址:​​https://pypi.org/project/colormap/​​

一、安裝colormap

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple easydev
pip install colormap      

colormap庫依賴于easydev庫,需要先安裝easydev再安裝colormap。

二、擷取顔色的RGB元組表示和十六進制表示

# coding=utf-8
from colormap import Color


c = Color('blue')
print(c.rgb)
print(c.hex)
print(c)      

運作結果:

(0.0, 0.0, 1.0)
#0000FF
Color Blue
  hexa code: #0000FF
  RGB code: (0.0, 0.0, 1.0)
  RGB code (un-normalised): [0.0, 0.0, 255.0]

  HSV code: (0.6666666666666666, 1.0, 1.0)
  HSV code: (un-normalised) 240.0 100.0 100.0

  HLS code: (0.6666666666666666, 0.5, 1.0)
  HLS code: (un-normalised) 240.0 50.0 100.0      

執行個體化一個Color類的顔色對象c,傳入需要檢視的顔色英文,列印輸出顔色對象c的rgb屬性即可得到對應的元組表示方法,列印輸出顔色對象c的hex屬性即可得到對應的十六進制表示方法。直接列印輸出顔色對象c,可以同時檢視該顔色的各種表示方法。

三、轉換顔色的表示方法

from colormap import hex2rgb, rgb2hex


print(rgb2hex(255, 0, 0))
print(hex2rgb('#FF0000'))      

運作結果:

#FF0000
(255, 0, 0)      

rgb2hex(): 将RGB顔色的元組表示方法轉換成十六進制表示方法。

hex2rgb(): 将RGB顔色的十六進制表示方法轉換成元組表示方法。

兩個方法是互逆的,RGB的元組表示是一個長度為3的元組,每個數字是0~255(2^8 - 1),三個數值分别表示紅、綠、藍的顔色值,如(255, 0, 0)表示紅色。

RGB的十六進制表示是一個以'#'号開頭的字元串,'#'後接一個長度為六的十六進制(0~F)數字,每兩位表示紅、綠、藍中的一個(00~FF),如‘#FF0000’表示紅色。

其他的轉換函數不是很常用,有些不能正常使用(如hex2web()和web2hex()),感興趣可以點進源碼看看。

四、建立顔色圖

要使用colormap建立顔色圖,需要先安裝numpy和matplotlib兩個庫。

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple      

這兩個庫都比較大,建議都換成國内的鏡像源。colormap自身沒有繪圖功能,是以生成圖像時會去調用numpy和matplotlib。

庫安裝成功後,開始繪制顔色圖。

from colormap import Colormap

c = Colormap()
map = c.cmap_linear('blue', 'white', 'green')
c.test_colormap(map)      

運作結果:

Python colormap庫的安裝和使用

執行個體化一個Colormap類的對象c,用于調用對應的方法生成顔色圖。

cmap_linear(): Colormap類中的方法,用于生成三種顔色的漸變圖,第一種顔色至第三種顔色的漸變,中間用第二種顔色銜接。傳入三種顔色,cmap_linear()方法中會用這三種顔色執行個體化三個Color類的對象,然後用三個對象生成顔色的漸變,并将漸變的結果作為一個顔色圖對象傳回。

test_colormap(): Colormap類中的方法,用于繪制漸變圖像。傳入需要繪圖的顔色圖對象,test_colormap()方法中會導入numpy和matplotlib庫,生成圖像。

如果不執行個體化Colormap類的對象,也可以直接調用函數生成顔色圖。

from colormap import cmap_builder, test_cmap


mycm = cmap_builder('green', 'black', 'blue')
test_cmap(mycm)      

運作結果:

Python colormap庫的安裝和使用

cmap_builder(): colormap庫中的函數,調用了Colormap類中的cmap_linear()方法。

test_cmap(): colormap庫中的函數,調用了Colormap類中的test_colormap()方法。

當然,也可以生成更複雜的顔色圖。

from colormap import Colormap


c = Colormap()
d = {'red':   [0, 1, 0, 0, 1, 1, 0, 1],
     'green': [0, 0, 1, 0, 1, 0, 1, 1],
     'blue':  [0, 0, 0, 1, 0, 1, 1, 1]}
map = c.cmap(d, reverse=False)
c.test_colormap(map)      

運作結果:

Python colormap庫的安裝和使用

cmap(colors=None, reverse=False, N=256): Colormap類中的方法,傳回一個colormap的對象,給matplotlib繪圖使用。上面用的cmap_linear()方法其實也是調用了cmap()方法。有3個參數。colors表示一組字典類型的RGB顔色參數。reverse表示顔色圖的順序,預設為False(從中心到邊緣的順序與colors的順序相同),如果改為True則顔色的順序剛好相反。N是一個整數,預設256,保持預設即可。