dtcms模板 开发面试题 底层架构 Python入门到实战 软件测试工程师 MongoDB docker安装部署 SQLMAP serialization struct vbscript background Semantic UI spark数据清洗 查看nodejs版本 matlab跳出for循环 axure导出html文件 jquery validate java 注解 python连接mysql python计算器 python中的for循环 javaindexof java语言简介 java遍历集合 javaworld java的map java中获取当前时间 java格式化字符串 java线程死锁 真实女友补丁 rndis驱动下载 华为交换机学习指南 proteus8 完美漂移辅助 ps怎么画漫画 cdr字体变形 fireworks 计算机科学概论 php随机数
当前位置: 首页 > 学习教程  > python

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

2021/2/7 11:09:31 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

色彩模型(RGB,RGBA,CMYK灰度) matplotlib中的色彩定义主要用到了RGB、RGBA、CMYK、灰色四种模型。 RGB模型 RGB是最常见的一种色彩模型,它使用红、绿、蓝三原色的亮度来定量表示颜色,这种模型也称为加色…

色彩模型(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,例如#FFFFFF
  • RGBA16进制字符串模式长度为9的字符串#rrggbbaa,以#开头后面8位16进数字,每2位一组,对应R、G、B、A,例如#FFFFFFFF
  • 16进制字符串简写模式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必须为大写。
  • 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 plt

color_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种色彩映射,根据颜色映射可知,最终各种色彩名称字符串都会统一转换为数字表示,因此各种不同色彩取值才可能统一

官方案例https://matplotlib.org/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',
    ......
    }

本文链接: http://www.dtmao.cc/news_show_2000258.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?