python中matplotlib内置的离散cmap中颜色有限,最多的tab20也只有20个颜色,为了获得包含更多颜色的cmap,最简单的方法就是合并内置cmap,创建新的。

这里是考虑的离散cmap,如果是连续cmap,就不存在颜色个数不够用的情况了。

零、需求

如下图所示,内置的qualitative系列包含下列离散cmap,最多只有20种颜色。

鉴于tab20b和tab20c的颜色各不相同,因此考虑合并它们得到一个新的cmap,可以直接用于更多颜色需求的图像绘制。

一、cmap相关操作

1. 函数get_cmap()通过指定str,获取相应cmap:

2. cmap实例其实类似于一个字典,以float形式输入[0, 1]之间的数字,能够得到对应的颜色rgba值(输入数字如果大于1,cmap会自动对其进行正则化)。

由于离散cmap中颜色个数有限,实际上一定范围内的float值对应的颜色是一样的。

3. 使用cmap.colors可以获得该cmap中包含的所有颜色的rgb值。

可以看出cmap中所有colors是以tuple的形式保存的。

4. cmap是ListedColormap实例,因此我们创建新的cmap也要借助该类型。

ListedColormap类可以通过接收一个colors的列表来创建cmap实例,因此考虑将合并后的总colors传给ListedColormap类,以此实现新cmap的创建。

上述代码可以看出,新创建的cmap拥有和内置cmap一样的性质和属性。

二、代码实例

下面给出完整代码,运行下面代码,新创建的new_cmap能够和内置cmap一样直接在scatter等画图函数中直接使用。

import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import numpy as npcmap1 = plt.get_cmap('tab20b')
cmap2 = plt.get_cmap('tab20c')
new_cmap = ListedColormap(cmap1.colors+cmap2.colors)x = np.random.random([40, 2])
cluster_labels = np.arange(40)
plt.figure(figsize=[12, 8])
plt.scatter(x[:, 0], x[:, 1], s=500, c=cluster_labels, cmap=new_cmap, marker='o', linewidths=2)
plt.colorbar()
plt.show()

上述代码运行结果如下,可以看出,40个数据点颜色各不相同,实现了对两个内置cmap的合并。

三、总结

如果需要更多颜色,可以自行合并想要的内置cmap,创建新的可用cmap。

matplotlib 合并cmap,创建cmap,创建listedcolormap相关推荐

  1. oracle创建表空间.创建用户.创建表

    oracle创建表空间.创建用户.创建表 转:http://blog.csdn.net/zhoubl668/archive/2009/02/02/3858576.aspx 在SQL*Plus中:(1) ...

  2. 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )

    文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...

  3. 【Flutter】Animation 动画 ( AnimatedBuilder 动画使用流程 | 创建动画控制器 | 创建动画 | 创建动画作用的组件 | 关联动画与组件 | 动画执行 )

    文章目录 ◯.AnimatedBuilder 引入 一.创建动画控制器 二.创建动画 三.创建动画作用的组件 四.创建 AnimatedBuilder 关联动画与组件 五.动画运行 六.完整代码示例 ...

  4. unity碰撞检测函数,碰撞信息获取,触发检测,使用粒子系统创建火焰,创建动画(火光闪烁),导航系统,通过导航系统控制人物移动,控制摄像机的跟随,控制角色动画播放

    碰撞检测函数 private void OnCollisionEnter(Collision collision){print("OnCollisonEnter");}privat ...

  5. CREO:CREO软件之工程图【表】之一明细表、表格创建、创建BOM球标、自动生成零件报表的简介及其使用方法(图文教程)之详细攻略

    CREO:CREO软件之工程图[表]之一明细表.表格创建.创建BOM球标.自动生成零件报表的简介及其使用方法(图文教程)之详细攻略 目录

  6. 创建镜像 - 创建与定制 mysql 镜像

    创建镜像 - 创建与定制 mysql 镜像 本文通过制作与定制 mysql 镜像为案例,一方面说明创建镜像简单,另一方面解释 docker image 的内容,直观描述 docker build 命令 ...

  7. 一键DG脚本(静默安装创建实例创建DG)

    本人原创,请勿转载:http://blog.csdn.net/ashic/article/details/46923761 ##首先,这只是为了练习shell而写 大神们不屑请别看 不懂shell的可 ...

  8. 数据库——创建数据库+创建表与主键

    文章目录 一.创建数据库 1.创建默认数据库 2.创建指定参数位置数据库 3.添加NDF数据文件 二.创建表 三.创建主键 1.创建主键 2.对已创建的表进行主.外键设置 一.创建数据库 1.创建默认 ...

  9. sql server基础语法 创建数据库 创建表

    sql server基础语法 创建数据库 创建表 1.创建数据库 2.表的创建 3.在现有表中添加标识列 4.创建外键 5.添加外键 6.约束 7.创建局部临时表 8.创建全局临时表 9.创建具有ch ...

最新文章

  1. 中国10大最震撼的无人工厂,你吃的用的都是这么来的!
  2. 将时间戳转为年月日时分秒格式
  3. ext js gridpanel绑定到动态生成的store
  4. Mongodb 集群加keyFile认证,Mongodb用户管理(转:http://blog.csdn.net/wlzjsj/article/details/61421230)
  5. 二、OC的构造方法和descriprtion方法
  6. 工作章 - 小程序web-view分享 流泪爬坑记
  7. 还在随缘炼丹?一文带你详尽了解机器学习模型可解释性的奥秘
  8. 基于 frida 实现的逆向工具包 hooker
  9. Flutter TextButton 详细使用配置、Flutter ButtonStyle样式概述实践
  10. america/los_angeles 时区 java_在Java ME中将“America / Los Angeles”时区转换为“PST”或“PDT”...
  11. 【IE】IE对line-height 失效的的解决方案
  12. 过来人给Java初学者的建议!
  13. iweboffice之word——自定义菜单的使用
  14. (己解决)黑苹果驱动英特尔核显疑问记录
  15. 报错:Container killed by YARN for exceeding memory limits
  16. 微信公众平台——用户管理
  17. 免费ofd在线转PDF
  18. 【职场】大公司想招程序员,一般都在什么网站上进行招聘呢?
  19. linux zip和gzip的区别
  20. golang 大数据平台_Golang在Momenta大数据平台当中的应用

热门文章

  1. 时间管理-系统管理员
  2. MySQL 数据库 source 命令详解及实例
  3. 记lrd的高二上学期第五次调研考试
  4. 撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing
  5. wps指定路径不存在怎么办_wps指定路径不存在怎么办_十万人都不知道键盘上 F1~F12 的作用,你肯定想不到......
  6. 七日年化收益率怎么计算
  7. REST-Assured,接口自动化的 “瑞士军刀“- 断言篇
  8. C语言:统计句子中元音字母的个数
  9. 页面找不到了无法解析服务器,win10下搜狗浏览器无法解析服务器的dns地址如何解决...
  10. gltf骨骼动画解析笔记