600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > matplotlib色彩(colors)之色彩基础知识(色彩模型 matplotlib色彩格式 matplotlib默认色彩映射)

matplotlib色彩(colors)之色彩基础知识(色彩模型 matplotlib色彩格式 matplotlib默认色彩映射)

时间:2018-06-10 16:49:41

相关推荐

matplotlib色彩(colors)之色彩基础知识(色彩模型 matplotlib色彩格式 matplotlib默认色彩映射)

色彩模型(RGB,RGBA,CMYK灰度)

matplotlib中的色彩定义主要用到了RGBRGBACMYK灰色四种模型。

RGB模型

RGB是最常见的一种色彩模型,它使用红、绿、蓝三原色的亮度来定量表示颜色,这种模型也称为加色混色模型,是以RGB三色光互相叠加来实现混色的方法,因而适合于显示器等发光体的显示。

如果是三原色光中的两种色光进行等比例混合的话,那么,得到的结果是黄、青、紫三色光。

常见的案例如:

红+绿=黄

红+蓝=紫(亮紫)

绿+蓝=青

红+绿+蓝=白

三种基色光全无=黑

这是色光混合,称为加色混合法。

因此RGB模型的颜色可以用R、G、B三个分量来表示。

F(物体颜色)=R(红色的百分比)+G(绿色的百分比)+B(蓝色的百分比)

RGBA模型

RGBA模型是在RGB模型的基础上加上了Alpha通道,Catmull和Smith在1971至1972年间提出了这个不可或缺的alpha数值,使得alpha渲染和alpha合成变得可能。提出者以alpha来命名是源于经典的线性插值方程αA + (1-α)B所用的就是这个希腊字母。

alpha通道一般用作不透明度参数。如果一个像素的alpha通道数值为0%,那它就是完全透明的(也就是看不见的),而数值为100%则意味着一个完全不透明的像素(传统的数字图像)。在0%和100%之间的值则使得像素可以透过背景显示出来,就像透过玻璃(半透明性),这种效果是简单的二元透明性(透明或不透明)做不到的。它使数码合成变得容易。

CMYK模型

CMYK模型,也被称为印刷四色模型,它彩色印刷时采用的一种套色模型,利用色料的三原色混色原理,加上黑色油墨,共计四种颜色混合叠加,形成所谓“全彩印刷”。四种标准颜色是:C:Cyan = 青色,又称为天蓝色或是湛蓝,M:Magenta = 品红色,又称为洋红色;Y:Yellow = 黄色;K:blacK=黑色,此处缩写使用最后一个字母K而非开头的B,是为了避免与Blue混淆。

CMYK模式是减色模式,相对应的RGB模式是加色模式。CMYK模式是一种用于印刷品依靠反光的色彩模模型,RGB模式是一种屏幕显示发光的色彩模型。

灰色模型

灰度模型使用黑色调表示物体,即用黑色为基准色,不同的饱和度的黑色来显示图像。 每个灰度对象都具有从 0%(白色)到100%(黑色)的亮度值。 使用黑白或灰度扫描仪生成的图像通常以灰度显示。

matplotlib色彩格式

RGB小数模式3元组(r, g, b),对应R、G、B,每个元素取值要求为01之间的小数,例如(0.1, 0.2 ,0.5)RGBA小数模式4元组(r, g, b, a),对应R、G、B、A,每个元素取值要求为01之间的小数,例如(0.1, 0.2 ,0.5 ,0.3)RGB16进制字符串模式长度为7的字符串#rrggbb,以#开头后面6位16进数字,每2位一组,对应R、G、B,例如#FFFFFFRGBA16进制字符串模式长度为9的字符串#rrggbbaa,以#开头后面8位16进数字,每2位一组,对应R、G、B、A,例如#FFFFFFFF16进制字符串简写模式RGB16进制字符串模式RGBA16进制字符串模式的简写模式,每组数字如果2个数字相同可简写为1个,例如#FFFFFF可简写为#FFF灰度小数字符串模式小数字符串,表示灰度,小数取值范围为01,例如'0.5'基础颜色字符长度为1的字符串,取值范围为{'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}对应RGB模型、CMYK模型的基础色和白色。X11/CSS4 ("html")模式的色彩名称字符串,比如"blue"xkcd色彩名称以xkcd:开头的字符串,对应xkcd社区定义的色彩映射,例如'xkcd:sky blue'默认色彩循环,Cn彩色定义由字符串C和1个非负整数构成,数字为默认色彩循环rcParams["axes.prop_cycle"]的索引,

rcParams["axes.prop_cycle"] (default: cycler('color', ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']))数字超过9,对应的颜色索引为数字个位数索引,例如C101C1的取值相同。注意C必须为大写。matplotlib大部分绘图函数、方法的颜色属性指向默认色彩循环,这也是为什么默认图表的颜色经常为蓝色的原因。Tableau色彩定义以tab:开头的字符串,取值范围为:{'tab:blue', 'tab:orange', 'tab:green', 'tab:red', 'tab:purple', 'tab:brown', 'tab:pink', 'tab:gray', 'tab:olive', 'tab:cyan'},对应默认的色彩循环,例如'tab:blue'等于C0。色彩取自Tableautab10调色盘。

案例:演示11种色彩格式

import matplotlib.pyplot as pltcolor_list = [(0.1, 0.1, 0.1), (0.1, 0.1, 0.1, 0.5), '#FFFF00','#FFFF00FF', '#F0F', '0.5', 'r', 'blue', 'C0', 'xkcd:blue', 'tab:blue']for i, j in enumerate(color_list):plt.plot([i, i], c=j)plt.annotate(repr(j), (0, i+0.1))plt.show()

matplotlib默认色彩映射(colormap)

从上面的色彩格式可知,色彩的表现形式主要有两种:

数字(包括小数和数字字符串):16进制字符串模式可以快捷的转换为小数元组。色彩名称字符串:色彩名称和色彩数字之间存在映射关系,我们称之为色彩映射(colormap)

matplotlib._color_data模块定义了4种色彩映射,根据颜色映射可知,最终各种色彩名称字符串都会统一转换为数字表示,因此各种不同色彩取值才可能统一

官方案例/gallery/color/named_colors.html演示了4中默认色彩映射对应的颜色。

默认的4种色彩映射如下:

基本色彩:

BASE_COLORS = {'b': (0, 0, 1), # blue'g': (0, 0.5, 0),# green'r': (1, 0, 0), # red'c': (0, 0.75, 0.75), # cyan'm': (0.75, 0, 0.75), # magenta'y': (0.75, 0.75, 0), # yellow'k': (0, 0, 0), # black'w': (1, 1, 1), # white}

Tableau色彩:

TABLEAU_COLORS = (('blue', '#1f77b4'),('orange', '#ff7f0e'),('green', '#2ca02c'),('red', '#d62728'),('purple', '#9467bd'),('brown', '#8c564b'),('pink', '#e377c2'),('gray', '#7f7f7f'),('olive', '#bcbd22'),('cyan', '#17becf'),)# Normalize name to "tab:<name>" to avoid name collisions.TABLEAU_COLORS = OrderedDict(('tab:' + name, value) for name, value in TABLEAU_COLORS)

XKCD色彩:

XKCD_COLORS = {'cloudy blue': '#acc2d9','dark pastel green': '#56ae57','dust': '#b2996e','electric lime': '#a8ff04','fresh green': '#69d84f','light eggplant': '#894585',......}# Normalize name to "xkcd:<name>" to avoid name collisions.XKCD_COLORS = {'xkcd:' + name: value for name, value in XKCD_COLORS.items()}

CSS色彩:

CSS4_COLORS = {'aliceblue': '#F0F8FF','antiquewhite': '#FAEBD7','aqua': '#00FFFF','aquamarine': '#7FFFD4','azure':'#F0FFFF',......}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。