【matplotlib】可视化解决方案——如何正确使用matplotlib颜色系统
概述
matplotlib 库是当前最为流行的数据可视化库,它支持相当多的颜色系统,
支持的颜色
RGB 或者 RBGA
可以传递三个到四个浮点数来指定 RGB 颜色或者 RGBA 颜色,例如 (0.1, 0.2, 0.5)
或者 (0.2, 0.5, 0.3, 0.2)
。
十六进制字符串
RGB 颜色或者 RGBA 颜色还可以使用基于十六进制的字符串,例如 #0f0f0f
或者 #0f0f0f80
。
包含灰度级的浮点值的字符串
例如 0.5
。
一些基本颜色的单字符速记符号
用一些颜色的首字母作为颜色的速记符,例如:
'b'
如蓝色'g'
作为绿色'r'
作为红色'c'
作为青色'm'
洋红色'y'
作为黄色'k'
作为黑色'w'
作为白色
- matplotlib 2.0 版本之后,默认颜色不再是之前的 [‘b’, ‘g’, ‘r’, ‘c’, ‘m’, ‘y’, ‘k’,…],所以使用 ‘b’ 反而是奇怪的颜色,并不能调出默认颜色
#1f77b4
。详情见链接颜色变化- 为了与当前配色一致,可以使用
colors = ['C0', 'C1', 'C2', ...]
2.0 版本之后的颜色变化
X11/CSS4 颜色
不区分大小写的 X11/CSS4 颜色名称。例如 aquamarine
和 mediumseagreen
;具体颜色详情见 wiki
xkcd 颜色
自 xkcd 的不区分大小写的颜色名称,带有 'xkcd:'
前缀,例如 'xkcd:sky blue'
。
CN 颜色规范
使用 c0~cn
来指定颜色,它是默认属性循环的索引的颜色。
tab 分类调色盘的颜色
tab10分类调色板中的 Tableau 颜色,例如 'tab:blue'
。
Matplotlib 中 RGB 透明度计算公式: RGBnew=RGBbelow∗(1−α)+RGBartist∗αRGB_{new} = RGB_{below} * (1 - \alpha) + RGB_{artist} * \alphaRGBnew=RGBbelow∗(1−α)+RGBartist∗α
示例
X11/CSS4 与 xkcd 颜色对比
完整代码如下:
import matplotlib.colors as mcolors
import matplotlib.patches as mpatch
import matplotlib.pyplot as pltoverlap = {name for name in mcolors.CSS4_COLORSif f'xkcd:{name}' in mcolors.XKCD_COLORS}fig = plt.figure(figsize=[9, 5])
ax = fig.add_axes([0, 0, 1, 1])n_groups = 3
n_rows = len(overlap) // n_groups + 1for j, color_name in enumerate(sorted(overlap)):css4 = mcolors.CSS4_COLORS[color_name]xkcd = mcolors.XKCD_COLORS[f'xkcd:{color_name}'].upper()# Pick text colour based on perceived luminance.rgba = mcolors.to_rgba_array([css4, xkcd])luma = 0.299 * rgba[:, 0] + 0.587 * rgba[:, 1] + 0.114 * rgba[:, 2]css4_text_color = 'k' if luma[0] > 0.5 else 'w'xkcd_text_color = 'k' if luma[1] > 0.5 else 'w'col_shift = (j // n_rows) * 3y_pos = j % n_rowstext_args = dict(fontsize=10, weight='bold' if css4 == xkcd else None)ax.add_patch(mpatch.Rectangle((0 + col_shift, y_pos), 1, 1, color=css4))ax.add_patch(mpatch.Rectangle((1 + col_shift, y_pos), 1, 1, color=xkcd))ax.text(0.5 + col_shift, y_pos + .7, css4,color=css4_text_color, ha='center', **text_args)ax.text(1.5 + col_shift, y_pos + .7, xkcd,color=xkcd_text_color, ha='center', **text_args)ax.text(2 + col_shift, y_pos + .7, f' {color_name}', **text_args)for g in range(n_groups):ax.hlines(range(n_rows), 3*g, 3*g + 2.8, color='0.7', linewidth=1)ax.text(0.5 + 3*g, -0.3, 'X11/CSS4', ha='center')ax.text(1.5 + 3*g, -0.3, 'xkcd', ha='center')ax.set_xlim(0, 3 * n_groups)
ax.set_ylim(n_rows, -1)
ax.axis('off')plt.show()
画图结果如下:
CN 颜色选择
Matplotlib 在绘制时将 CN 颜色转换为 RGBA。完整代码如下:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mplth = np.linspace(0, 2*np.pi, 128)def demo(sty):mpl.style.use(sty)fig, ax = plt.subplots(figsize=(3, 3))ax.set_title('style: {!r}'.format(sty), color='C0')ax.plot(th, np.cos(th), 'C1', label='C1')ax.plot(th, np.sin(th), 'C2', label='C2')ax.legend()demo('default')
画图结果如下:
综合示例
import matplotlib.pyplot as plt
import numpy as npt = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)# 1) RGB tuple:
fig, ax = plt.subplots(facecolor=(.18, .31, .31))
# 2) hex string:
ax.set_facecolor('#eafff5')
# 3) gray level string:
ax.set_title('Voltage vs. time chart', color='0.7')
# 4) single letter color string
ax.set_xlabel('Time [s]', color='c')
# 5) a named color:
ax.set_ylabel('Voltage [mV]', color='peachpuff')
# 6) a named xkcd color:
ax.plot(t, s, 'xkcd:crimson')
# 7) Cn notation:
ax.plot(t, .7*s, color='C4', linestyle='--')
# 8) tab notation:
ax.tick_params(labelcolor='tab:orange')plt.show()
画图结果如下:
往期回顾
- 【matplotlib】可视化解决方案——如何实现画布局部放大功能
- 【matplotlib】可视化解决方案——如何更改matplotlib配置信息
- 【matplotlib】可视化解决方案——如何定制化网格
- 【matplotlib】可视化解决方案——如何向画布添加交叉直线
- 【matplotlib】可视化解决方案——如何解决matplotlib中文乱码问题
- 【matplotlib】可视化解决方案——如何设置matplotlib风格集
- 【matplotlib】可视化解决方案——如何设置轴标签的透明度和大小
- 【matplotlib】可视化解决方案——如何向图表中添加数据表
- 【matplotlib】可视化解决方案——如何更改绘图区域背景颜色
- 【matplotlib】可视化解决方案——如何使用数学公式
文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!
【matplotlib】可视化解决方案——如何正确使用matplotlib颜色系统相关推荐
- matplotlib可视化_EDA:Geopandas,Matplotlib和Bokeh中的可视化
matplotlib可视化 Nowadays, everyone is immersed with plenty of data from news sources, cellphones, lapt ...
- 数据可视化解决方案 Data Visualization with Matplotlib and Seaborn Li
作者:禅与计算机程序设计艺术 1.简介 Matplotlib 和 Seaborn 是Python数据可视化库,本文将详细阐述如何利用Matplotlib和Seaborn进行数据的可视化,并基于Scik ...
- 【Python】Matplotlib 可视化必备神书,附pdf下载
出品:Python数据之道 大家知道,在利用Python进行数据可视化过程中,基本上是很难绕开 Matplotlib 的,因为 不少其他的可视化库多多少少是建立在 Matplotlib 的基础上的. ...
- 数据科学 IPython 笔记本 8.3 Matplotlib 可视化
8.3 Matplotlib 可视化 原文:Visualization with Matplotlib 译者:飞龙 协议:CC BY-NC-SA 4.0 本节是<Python 数据科学手册> ...
- python使用matplotlib可视化包含倒影的柱状图(bar plot with shadow)、配置rcParams坐标轴正确显示负号(-)
python使用matplotlib可视化包含倒影的柱状图(bar plot with shadow).配置rcParams坐标轴正确显示负号(-) 目录
- 【matplotlib】可视化解决方案——共享绘图区域问题
共享绘图区域问题 一.前言 有些时候我们会发现如果轴的范围不合适那么很难从图片中提取相应的信息,例如下方左图和有图很显然我们无法从中得出这二者密集程度的区别.除此之外很多时候我们想在一个坐标轴系统下展 ...
- 太干了,全网最全的Matplotlib可视化教程
导读 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直 ...
- 可能是全网最全的Matplotlib可视化教程
导读 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形.通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直 ...
- Matplotlib可视化菜鸟教程
公众号后台回复"图书",了解更多号主新书内容 作者:蛰虫适航 来源:蛰虫适航 简介 Matplotlib可以说是Python最声名远扬的可视化库了,也是Python数据分析库的&q ...
最新文章
- 业界丨一文看懂AI人才百万美元年薪因何而来?
- 基于FPGA的SPI FLASH控制器设计
- 机房工程施工细节标准做法,每张图都有说明
- JS----javascript原型和原型链
- 热点的ap频段哪个快_WLAN中无线AP信道的划分
- 牛客网 在线编程 局部最小值位置
- python2exe下载_py2exe下载 0.6.9.win32-py2.7-python转exe工具-pc6下载站
- 串口服务器的通讯模式
- 将中文标点符号替换成英文标点符号
- python爬虫从入门到放弃-【爬虫】python爬虫从入门到放弃
- linux 如何选择新的内核,如何更新内核??__boot_内核_vmlinuz_linux_System__169IT.COM
- 启动pe系统找不到计算机硬盘分区,pe系统看不到硬盘分区_pe系统里看不到硬盘...
- Vim插件(三) Terminal 终端
- html多级下拉菜单代码,jQuery实现的多级下拉菜单效果代码
- OpenCV每日函数 WeChat QR 微信二维码检测器
- C程序设计语言思维导图
- oracle revoke 列_oracle受权与回收权限grant和revoke
- Hbase资源管理 Quotas
- VM使用-pin针同心度检测
- jsd2205-csmall-passport(Day13)