python 简单的颜色序列生成器

由来昨天画了这张图,自动分配的颜色比较深,而且总颜色数不多,这张图的颜色是自己一点一点写的,很麻烦,所以想制作一个简单的颜色序列生成器一劳永逸介绍我给这个文件取名为InterestingColorfulColor.py,把它放在python安装目录的Lib文件夹就可以随时用import语句导入,非常方便。例如:import InterestingColorfulColor as ICC目前这个文件的主要内容只有一个类:ColorOrderColorOrder类里给出了15种按照颜色深浅梯度
摘要由CSDN通过智能技术生成

2021/04/21:我火星了????

python Seaborn库 调色板

所以下面的东西都别看了

.

.

.

.

.

.

.

.

.

.

由来

昨天画了这张图,自动分配的颜色比较深,而且总颜色数不多,这张图的颜色是自己一点一点写的,很麻烦,所以想制作一个简单的颜色序列生成器一劳永逸
在这里插入图片描述

介绍

我给这个文件取名为InterestingColorfulColor.py,把它放在python安装目录的Lib文件夹就可以随时用import语句导入,非常方便。
例如:

import InterestingColorfulColor as ICC

目前这个文件的主要内容只有一个类:ColorOrder
ColorOrder类里给出了15种按照颜色深浅梯度变化的基础颜色序列,分别为:红,红橙,橙,橙黄,黄,黄绿,绿,绿青,青,青蓝,蓝,蓝紫,紫,紫红,和灰色(由纯黑到纯白)
每种序列有16种不同的颜色。
通过这个类可以较为轻松地得到一种你想要的颜色序列,有可能可以让你的工作提高一点点效率。不过这毕竟是个小制作,功能不复杂。
下图展示其中一部分颜色
在这里插入图片描述

使用

约定

约定上述15种颜色序列为 gray red, orange,yellow,green,cyan,blue,purple 以及除了gray外剩下七种颜色中相邻颜色之间的两两组合 如redorange, greencyan等,对两种颜色书写的先后顺序不做要求即redpurple和purplered都是正确的

导入模块
import InterestingColorfulColor as ICC
创建一个ColorOrder对象
co = ICC.ColorOrder(['red','blue'],mixtype = 'cross')

参数解析:
def init(self, colornames, mixtype = ‘Connect’)
两个参数,colornames , mixtype

参数colornamse给出若干个颜色序列的名称。
参数mixtype表示混合这些颜色序列的方式,目前只有两个值:connect 和 cross(不需要区分大小写)
connect为默认值 以连接的方式混合,即按照顺序依次把colornames中给出的颜色序列首尾相接
cross 以交叉的方式混合 。举个例子 如果以cross的方式混合三个颜色序列[1,2,3][a,b,c][x,y,z] 最后的结果序列为[1,a,x,2,b,y,3,c,z]

查看颜色序列,以及其他两个隐藏属性
co.getOrder() #查看序列
co.getLength() #查看序列长度
co.getBaseOrderNumber() #查看该序列由几个基础序列混合而成

结果:
['#2F0000', '#000079', '#4D0000', '#000093', '#600000', '#0000C6', '#750000', '#0000C6', '#930000', '#0000E3', '#AE0000', '#2828FF', '#CE0000', '#4A4AFF', '#EA0000', '#6A6AFF', '#FF0000', '#7D7DFF', '#FF2D2D', '#9393FF', '#FF5151', '#AAAAFF', '#ff7575', '#B9B9FF', '#FF9797', '#CECEFF', '#FFB5B5', '#DDDDFF', '#FFD2D2', '#ECECFF', '#FFECEC','#FBFBFF']
32
2
切片获取序列
co.getLeft(False) #获得序列左边的25%
co.getRight(True) #获得序列右边的25%
co.getMiddle() #获得序列中间的50%

参数分析:
def getLeft(self, muti_section = False):
三个方法只有一个相同的参数,muti_section
当muti_section默认为False 直接根据需求获得序列的前25%或后25%或中间50%
当muti_section为True, 考虑某些时候切片以connect方式混合的序列,他会单独提取每个基础序列的左、右或中间的部分,拼接到一起作为返回结果

与ColorOrder对象的序列混合
co.mix(co,'cross')

参数解析:
def mix(self, co, mixtype = ‘Connect’)
co为实例对象,mixtype与__init__中的mixtype相同
值得一提的是这时两个序列不一定时等长的,我们再举一个cross混合的例子。假设混合[2,3,4,2,3,4,2,3,4]和[0,1,0,1,0,1]两个序列,最后的结果是[2,3,4,0,1,2,3,4,0,1,2,3,4,0 1]

应用简例

%matplotlib inline
import InterestingColorfulColor as ICC
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1,2,figsize = (16,8))

co = ICC.ColorOrder(['blue','redpurple'],'cross')
ax[0].pie([1]*len(co.getOrder()),colors = co.getOrder())

co.mix(ICC.ColorOrder(['Green']),'cross')
ax[1].pie([1]*len(co.getMiddle()),colors = co.getMiddle())

效果:
在这里插入图片描述

%……&%¥……?????!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值