配色的选择是在我们论文文章画图过程中经常面临的一个问题。常用的R或python语言都内置了默认的颜色系统,强大的默认设置可以满足我们的绘图需求。
但当我们需要绘制更多的图形时,固定的配色就会显得重复,此时通过自定义颜色就可以丰富图形的表现。但是当遇上选择困难户这又诞生了一个更大的问题。随机的选择又不能满足一个处女座该有的挑剔,这可怎么办呢?下面小鹿将介绍一种从艺术画作中提取特征颜色的新奇思路,让名家审美来满足挑剔的你~
GRB颜色空间
要想学会配色,首先要对颜色有一定的认知。RGB颜色空间以R(Red:红)、G(Green:绿)、B(Blue:蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,俗称三基色模式。每一种颜色按其亮度的不同分为256个等级,可表示256的立方16777216种不同的颜色,是计算机使用最广泛的颜色空间。
将图片中的每个像素绘制到三维空间如图所示:
印象派
什么是印象派风格?19世纪60年代,法国画家克劳德·莫奈(Claude Monet)的一幅油画《日出·印象》因为过于粗糙、随便,受到一位记者嘲讽:“完全是凭印象胡乱画出来的。”;又比如荷兰后印象派画家文森特·梵高,都是“印象主义”。随着时间推移,印象派逐渐成为西方绘画史上划时代的艺术流派。印象主义采取在户外阳光下直接描绘景物,光影色彩丰富。文章图形配色以这些经历了历史沉淀的大师作品作为配色依据,从中提取主题颜色备选成为了文章配色的一种思路。
主题颜色的提取
可从图片中提取主题色算法有颜色量化法(Color Quantization)、聚类(Clustering)和颜色建模等方法。下图为通过聚类算法,提取部分印象派画作主题色,以十六进制表示。图1| 莫奈名画
图2 |梵高名画
从图片中提取主题颜色,取决于图片颜色本身的组成,一般选取颜色对比分明的图片效果较好,同时因为组成颜色的像素一般远超过聚类数,会在每个聚类中选取特征色作为主题色的组成,因此主题色的组成会根据聚类数的不同而不同。当主题色提取完成以后,可以从中选取具有对比强烈的颜色进行绘图!
如何实现呢?
In [14]:
import os
import matplotlib.pyplot as plt
import matplotlib as mpl
from sklearn.cluster importMiniBatchKMeans, KMeans
os.chdir(r"C:\Users\Pioneer\Desktop\color")
img = plt.imread("test.jpg")
img0 = img
img=img.reshape(img.shape[0]*img.shape[1],3)
p=KMeans(n_clusters=7)
p.fit_predict(img)
centroids=p.cluster_centers_ / 255
cmap=mpl.colors.ListedColormap(centroids)
l = centroids.tolist()
l.sort(key=lambda x:sum(x))# 将 RGB 转为十六进制
def RGB_to_Hex(tmp):
rgb = [x * 255 for x in tmp] # 将RGB格式划分开来
strs = '#'
for i in rgb:
num =int(i) # 将str转int
strs += str(hex(num))[-2:].replace('x', '0').upper()
return strs
c = []
fori in l:
c.append(RGB_to_Hex(i))
# 图像显示
fig=plt.figure(figsize=(5,5)
rect1 = [0.1, 0.3, 0.8, 0.65]
ax1 = plt.axes(rect1)
plt.imshow(img1)
ax1.axis("off")
rect2 = [0.1, 0.05, 0.8, 0.2]
ax2 = plt.axes(rect2)
n = 7
lx = []
for i inrange(n):
lx.append((i*6,i*6+6))
ax2.broken_barh(lx, (6*(n-1)/2, 24), facecolors=c)
ax2.set_ylim(0, 6*n)
ax2.set_xlim(0, 6*n)
for j,k in zip(range(n),c):
x = j*6+3
y = 6*(n-1)/2-18
plt.text(x,y,k,fontsize=8,rotation=30,ha='center')
plt.axis("off")print(c)
['#2B1818', '#304158', '#914728', '#497EA9', '#DC8B2E', '#76CAED', '#D5CCA3']
参照以上方式,大师配色方法就学到手啦~对于我们文章的美观度和准确性将更进一部分的提升,谁说配色不重要呢?处女座该有的挑剔你千万不要放过哦~
鹿明生物的知识小分享将与您常伴,欢迎关注鹿明生物公众号,更多生信知识分享不停歇哦~
猜你还想看
END