詳解Python?matplotlib中的色彩使用詳解
簡(jiǎn)介
matplotlib中提供了一些常見(jiàn)顏色的字符串,并封裝成了幾個(gè)顏色字典,并放在了matplotlib.colors中,可通過(guò)dir(matplotlib.colors)查看,包括
- ‘BASE_COLORS’
- ‘CSS4_COLORS’
- ‘TABLEAU_COLORS’
- ‘XKCD_COLORS’
以BASE_COLORS為例,其內(nèi)容為
import matplotlib.colors as mcolors
from pprint import pprint
pprint(mcolors.BASE_COLORS)
# 下面為其返回值
{'b': (0, 0, 1),
'c': (0, 0.75, 0.75),
'g': (0, 0.5, 0),
'k': (0, 0, 0),
'm': (0.75, 0, 0.75),
'r': (1, 0, 0),
'w': (1, 1, 1),
'y': (0.75, 0.75, 0)}可見(jiàn),其基礎(chǔ)顏色共8種,分別是
| 名稱 | RGB | 名稱 | RGB | 名稱 | RGB |
|---|---|---|---|---|---|
| r(紅) | (1,0,0) | c(青) | (0, 0.75, 0.75) | k(黑) | (0,0,0) |
| g(綠) | (0,0.5,0) | m(品紅) | (0.75, 0, 0.75) | w(白) | (1,1,1) |
| b(藍(lán)) | (0,0,1) | y(黃) | (0.75, 0.75, 0) |
色彩圖繪制函數(shù)
下面封裝一個(gè)函數(shù),來(lái)繪制顏色字典。其實(shí)很簡(jiǎn)單,就是將每一種顏色以色塊的形式繪制出來(lái),然后在色塊后面加上圖像的顏色即可。
# 為顏色排序的函數(shù) cSort = lambda c : tuple(mcolors.rgb_to_hsv(mcolors.to_rgb(c)))
而繪制色塊,則需要用到Rectangle類,具體實(shí)現(xiàn)方法代碼如下
import math
from matplotlib.patches import Rectangle
import matplotlib.pyplot as plt
def plot_colortable(colors, ncols=4, sort_colors=True, show=True):
w,h = 200, 20
M = 12 # 邊緣
names = list(colors) if not sort_colors else sorted(colors, key=cSort)
nrows = math.ceil(len(names) / ncols)
W = w * ncols + 2 * M
H = h * nrows + 2 * M
fig, ax = plt.subplots(figsize=(W/72, H/72), dpi=72)
# 設(shè)置圖像的邊界
fig.subplots_adjust(M/W, M/H, (W-M)/W, (H-M)/H)
ax.set_xlim(0, w * ncols)
ax.set_ylim(h * (nrows-0.5), -h/2.)
ax.set_axis_off()
for i, name in enumerate(names):
row, col = i % nrows, i // nrows
y = row * h
st = w * col
xText = w * col + 55 # 文字的起始位置
ax.text(xText, y, name, fontsize=14,
horizontalalignment='left',
verticalalignment='center')
rect = Rectangle(xy=(st, y-9), width=48,
height=18, facecolor=colors[name], edgecolor='0.7')
ax.add_patch(rect)
if show: plt.show()
return fig其中w和h為每種顏色所占用的寬度和高度,M為其邊緣尺寸。輸入ncols為列數(shù),通過(guò)顏色字典中顏色的個(gè)數(shù)和ncols計(jì)算出所需行數(shù)nrow。
色塊繪圖
最后,分別繪制這四個(gè)顏色字典
plot_colortable(mcolors.BASE_COLORS, 3, False)
下圖即為基礎(chǔ)顏色,總共8種:

plot_colortable(mcolors.CSS4_COLORS, ncols=6)
下圖即為CSS顏色,總計(jì)148種,光是灰色就多達(dá)十來(lái)種,只不過(guò)gray和grey是同義詞,二者的RGB是完全相同的

plot_colortable(mcolors.TABLEAU_COLORS, ncols=5)
下圖即為tab顏色,總計(jì)10種,分別是灰色、棕色、橘黃色、橄欖色、綠色、青色、藍(lán)色、紫色、粉色以及紅色:

XKCD 是由 Randall Munroe 創(chuàng)作的流行網(wǎng)絡(luò)漫畫(huà),他通過(guò)20萬(wàn)人調(diào)查,得到了將近1000中顏色的名稱,并將其進(jìn)行了RGB映射。matplotlib中的XKCD_COLORS顏色高達(dá)949種,采用上述繪圖方案得到的圖實(shí)在太過(guò)擁擠,故而將其保存為png
xkcd_fig = plot_colortable(mcolors.XKCD_COLORS)
xkcd_fig.savefig("plt_color_xkcd.png")結(jié)果如下圖所示,可見(jiàn)雖然有將近1000中色彩,但并不包含灰色

到此這篇關(guān)于詳解Python matplotlib中的色彩使用詳解的文章就介紹到這了,更多相關(guān)Python matplotlib內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Elasticsearch映射字段數(shù)據(jù)類型及管理
這篇文章主要介紹了Elasticsearch映射字段數(shù)據(jù)類型及管理的講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
MxNet預(yù)訓(xùn)練模型到Pytorch模型的轉(zhuǎn)換方式
這篇文章主要介紹了MxNet預(yù)訓(xùn)練模型到Pytorch模型的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
tensorboard實(shí)現(xiàn)同時(shí)顯示訓(xùn)練曲線和測(cè)試曲線
今天小編就為大家分享一篇tensorboard實(shí)現(xiàn)同時(shí)顯示訓(xùn)練曲線和測(cè)試曲線,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Python爬蟲(chóng)之自動(dòng)爬取某車之家各車銷售數(shù)據(jù)
應(yīng)朋友要求,幫忙采集某車之家的一些汽車品牌的銷售數(shù)據(jù),包含購(gòu)車時(shí)間、車型、經(jīng)銷商、裸車價(jià)等一類信息. 今天我們就簡(jiǎn)單演示一下采集過(guò)程,大家可以根據(jù)自己的興趣進(jìn)行拓展.比如采集自己喜歡的品牌汽車數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析等等,需要的朋友可以參考下2021-06-06
基于Python的PIL庫(kù)學(xué)習(xí)詳解
這篇文章主要介紹了基于Python的PIL庫(kù)學(xué)習(xí)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
python2 與 python3 實(shí)現(xiàn)共存的方法
這篇文章主要介紹了python2 與 python3 實(shí)現(xiàn)共存的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
詳解python ThreadPoolExecutor異常捕獲
本文主要介紹了詳解python ThreadPoolExecutor異常捕獲,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

