詳解Python?matplotlib中的色彩使用詳解
簡介
matplotlib中提供了一些常見顏色的字符串,并封裝成了幾個顏色字典,并放在了matplotlib.colors中,可通過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)}
可見,其基礎顏色共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(藍) | (0,0,1) | y(黃) | (0.75, 0.75, 0) |
色彩圖繪制函數(shù)
下面封裝一個函數(shù),來繪制顏色字典。其實很簡單,就是將每一種顏色以色塊的形式繪制出來,然后在色塊后面加上圖像的顏色即可。
# 為顏色排序的函數(shù) cSort = lambda c : tuple(mcolors.rgb_to_hsv(mcolors.to_rgb(c)))
而繪制色塊,則需要用到Rectangle類,具體實現(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) # 設置圖像的邊界 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ù),通過顏色字典中顏色的個數(shù)和ncols計算出所需行數(shù)nrow。
色塊繪圖
最后,分別繪制這四個顏色字典
plot_colortable(mcolors.BASE_COLORS, 3, False)
下圖即為基礎顏色,總共8種:
plot_colortable(mcolors.CSS4_COLORS, ncols=6)
下圖即為CSS顏色,總計148種,光是灰色就多達十來種,只不過gray和grey是同義詞,二者的RGB是完全相同的
plot_colortable(mcolors.TABLEAU_COLORS, ncols=5)
下圖即為tab顏色,總計10種,分別是灰色、棕色、橘黃色、橄欖色、綠色、青色、藍色、紫色、粉色以及紅色:
XKCD 是由 Randall Munroe 創(chuàng)作的流行網(wǎng)絡漫畫,他通過20萬人調(diào)查,得到了將近1000中顏色的名稱,并將其進行了RGB映射。matplotlib中的XKCD_COLORS顏色高達949種,采用上述繪圖方案得到的圖實在太過擁擠,故而將其保存為png
xkcd_fig = plot_colortable(mcolors.XKCD_COLORS) xkcd_fig.savefig("plt_color_xkcd.png")
結(jié)果如下圖所示,可見雖然有將近1000中色彩,但并不包含灰色
到此這篇關于詳解Python matplotlib中的色彩使用詳解的文章就介紹到這了,更多相關Python matplotlib內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Elasticsearch映射字段數(shù)據(jù)類型及管理
這篇文章主要介紹了Elasticsearch映射字段數(shù)據(jù)類型及管理的講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04MxNet預訓練模型到Pytorch模型的轉(zhuǎn)換方式
這篇文章主要介紹了MxNet預訓練模型到Pytorch模型的轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05tensorboard實現(xiàn)同時顯示訓練曲線和測試曲線
今天小編就為大家分享一篇tensorboard實現(xiàn)同時顯示訓練曲線和測試曲線,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python爬蟲之自動爬取某車之家各車銷售數(shù)據(jù)
應朋友要求,幫忙采集某車之家的一些汽車品牌的銷售數(shù)據(jù),包含購車時間、車型、經(jīng)銷商、裸車價等一類信息. 今天我們就簡單演示一下采集過程,大家可以根據(jù)自己的興趣進行拓展.比如采集自己喜歡的品牌汽車數(shù)據(jù)進行統(tǒng)計分析等等,需要的朋友可以參考下2021-06-06python2 與 python3 實現(xiàn)共存的方法
這篇文章主要介紹了python2 與 python3 實現(xiàn)共存的方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07詳解python ThreadPoolExecutor異常捕獲
本文主要介紹了詳解python ThreadPoolExecutor異常捕獲,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01