利用matplotlib.pyplot工具生成颜色数组

用途

利用循环语句生成图表时,有时希望自定义每组数据在图表上颜色

如果多组数据在同一图表上生成图形,其实matplotlib.pyplot会自动给每组数据分配不同的颜色
例如:

import numpy as np
import matplotlib.pyplot as pltx = np.linspace(0,10,1000,endpoint=False)
ys = [0, 4, 5, 3, 8, 9, 1, 7, 6, 2]     # 每条横线位置
print(ys)
plt.figure(figsize=(10,8))
ax = plt.gca()
for i in range(10):plt.scatter(x=x,y=np.full(1000,ys[i]),s=1,label=i)
plt.legend(fontsize=12)
plt.show()

对应的图像(标签值对应的是直线插入的顺序)如下:

颜色很漂亮,但如果想找第一条插入的直线在哪,第二条插入的直线在哪,其实并不直观甚至是很难找

所以,有时我们想要一组更具有规律性的颜色来区分,这意味着我们需要指定每条数据的颜色。
比如我们按数据插入先后顺序,每条线按从红到蓝显示,就像下图这样,通过颜色的递进关系一眼就能看出y=0的这条直线是第一条插入的,y=4的这条是第二条插入的

方法

要实现上面的效果,首先就是生成颜色数组

  1. 手动写一个数组列表的方法就不具体介绍了,自己搜一下有哪些颜色就行
# colors = ["darkred", "red", "orangered",此处省略, "blue", "darkblue"]
  1. 想要介绍的是从一个颜色渐进的图谱中取颜色
    常见的图谱色有,自己可以去搜下各颜色对应的名称,同时可以自己定义一个渐变色:

get_cmap

然后我们要用到的一个主要函数是matplotlib.pyplot.get_cmap(name=None, lut=None)
简单来说,get_cmap()有两个参数:
name:颜色图谱,可以是字符串,也可以是colormap实例
lut:要得到的颜色个数,一个整数

# 比如选择了'RdBu'色谱,选择分为10段
colors = plt.get_cmap('RdBu',10)
# 我们要取颜色的话,传入整数或者整数列表
colors([0,1,2,3,4,5,6,7,8,9,10,11])

得到以下结果,可以看出这是个narray二维数组(只传入一个整数且不用列表,则返回一个python数组,plt绘图时需要二维数组的颜色),且大于9的数值都是一样的颜色了(这与我们设置了分为10段有关)

array([[0.40392157, 0.        , 0.12156863, 1.        ],[0.71372549, 0.1254902 , 0.18344227, 1.        ],[0.86535948, 0.43660131, 0.34814815, 1.        ],[0.96862745, 0.71764706, 0.6       , 1.        ],[0.98169935, 0.90762527, 0.86405229, 1.        ],[0.88583878, 0.92941176, 0.95337691, 1.        ],[0.65490196, 0.81437908, 0.89411765, 1.        ],[0.33159041, 0.62004357, 0.78823529, 1.        ],[0.14422658, 0.41960784, 0.68453159, 1.        ],[0.01960784, 0.18823529, 0.38039216, 1.        ],[0.01960784, 0.18823529, 0.38039216, 1.        ],[0.01960784, 0.18823529, 0.38039216, 1.        ]])

上面那幅红-蓝渐变色的图表是根据下方代码得到的

import numpy as np
import matplotlib.pyplot as pltx = np.linspace(0,10,1000,endpoint=False) # 加密
ys = [0, 4, 5, 3, 8, 9, 1, 7, 6, 2]     # 每条横线位置
print(ys)
plt.figure(figsize=(10,8))
ax = plt.gca()
for i in range(10):plt.scatter(x=x,y=np.full(1000,ys[i]),s=1,label=i,c=plt.get_cmap('RdBu',10)([i]))
plt.legend(fontsize=12)
plt.show()

生成渐变颜色数组的方法

# 对get_cmap稍微整理下
def get_colors(name, lut):"""params:- name:颜色图谱,可以是字符串,也可以是colormap实例- lut:要得到的颜色个数,一个整数"""return plt.get_cmap(name, lut)([i for i in range(lut)])

效果就是这样

python生成颜色数组相关推荐

  1. Python生成零数组

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python生成零数组 zeros()函数 选择题 以下python代码输出什么? impo ...

  2. python生成随机数组_python3.x 生成3维随机数组实例

    python3.x 生成3维随机数组实例 如下所示: import numpy as np a=np.random.randint(0,10,size=[3,3,3]) print(a) 以上这篇py ...

  3. python生成一个数组_在for循环中创建多个数组(Python)

    我目前遇到Numpy阵列的问题.如果在其他地方已经提出这个问题,我道歉,但我觉得我到处都是. 我最初的问题是我试图创建一个数组并用多组不同大小的站数据填充它.由于我无法使用大小不同的数据集填充相同的数 ...

  4. python生成一维数组,二维数组

    1. 列表 a1=[[0] * 5] print(a1) print(type(a1)) #输出: [[0, 0, 0, 0, 0]] <class 'list'> type是内置函数,不 ...

  5. Python生成JSON数组

    自己找了很多,没找到数组的,最后还是看了好多网页,都没有,有些大牛还要收金币,还要VIP可见,害我还冲了个VIP. 自己研究的,大神们可以多多指教,妹子的第一篇自创 # - 20210602 LETi ...

  6. python生成渐变颜色数组

    可以使用 Matplotlib 库中的 LinearSegmentedColormap 类来生成渐变颜色数组. 首先,需要安装 Matplotlib 库,在命令行中输入: pipinstall mat ...

  7. python numpy库等差不均分_numpy.linspace 生成等差数组的方法

    如下所示: numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) start:起始值 stop:结 ...

  8. python生成多个列表_python生成多个只含0,1元素的随机数组或列表(代码)

    python生成多个只含0,1元素的随机数组或列表(代码) >>> import numpy as np >>> myarray= np.random.randin ...

  9. python词云改颜色_一种用Python生成词云

    一种用Python生成词云 我们在阅读一篇很长的文章时,总先看看文章的关键词来获知文章的大概内容.今天我们就来制作一个词云程序,将文章中出现次数较多的词语提取出来,生成一张词云图. 词云图的生成原理: ...

  10. Python生成中文词云图(二):不可指定词云特定的形状和颜色。

    Python生成中文词云图(二):不可指定词云特定的形状和颜色. 什么是词云? 首先,什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关 ...

最新文章

  1. win10+Linux双系统安装及一些配置问题
  2. Android内存泄漏就这样产生了
  3. 【原】iOS学习之UITabBar的隐藏
  4. SEO中的DIV CSS样式的命名规则
  5. stm 32 IO重映射
  6. Java中利用MessageFormat对象实现类似C# string.Format方法格式化
  7. 熊猫烧香分析报告_熊猫分析进行最佳探索性数据分析
  8. 基于区块链的政务平台设计探索
  9. libevent:信号、超时、回调
  10. html5首页图标怎么除掉,移动端H5页面端如何除去input输入框的默认样式
  11. java 关闭守护线程_Java并发编程之线程生命周期、守护线程、优先级、关闭和join、sleep、yield、interrupt...
  12. 【上采样问题】将浮点运算转换成整数运算
  13. 麻省理工 城市规划 计算机,麻省理工学院建筑设计与城市规划科研
  14. Newton形式的Hermite插值多项式
  15. 小米手机各种检测代码
  16. 温州计算机职称考试成绩查询,职业资格证书可上网查询认证
  17. DSP篇--C6701功能调试系列之 FLASH测试
  18. 三星S11首曝光/2019款iPhone预测价格出炉
  19. HyperTech合泰集团介绍
  20. 搜索引擎下拉食云速捷详细_下拉框搜索四云 速捷超稳,下拉框搜索康云速捷优选...

热门文章

  1. 最全最详细的小白快速上手Modelsim教程
  2. qt 语言设置乱码_QT中文乱码与国际化支持
  3. Windows7下UEFI开发EDK2环境搭建(VS2013+UDK2015+IASL+patch+Openssl)
  4. 一名清华考研者自诉:福昕PDF阅读器APP让我找回希望
  5. c语言调用子程序实例,C语言程序调用汇编语言子程序
  6. 思科CCNA考试流程-ielab
  7. Java入门电子书百度网盘下载,附面试答案
  8. Access数据库迁移到MS SQL Server数据库
  9. 科大讯飞语音合成的引入
  10. 使用RAID 5虚拟磁盘时,dell的perc控制器H310的性能较差