python配色_python语言再次解决文章配色难题
配色的選擇是在我們論文文章畫圖過(guò)程中經(jīng)常面臨的一個(gè)問(wèn)題。常用的R或python語(yǔ)言都內(nèi)置了默認(rèn)的顏色系統(tǒng),強(qiáng)大的默認(rèn)設(shè)置可以滿足我們的繪圖需求。
但當(dāng)我們需要繪制更多的圖形時(shí),固定的配色就會(huì)顯得重復(fù),此時(shí)通過(guò)自定義顏色就可以豐富圖形的表現(xiàn)。但是當(dāng)遇上選擇困難戶這又誕生了一個(gè)更大的問(wèn)題。隨機(jī)的選擇又不能滿足一個(gè)處女座該有的挑剔,這可怎么辦呢?下面小鹿將介紹一種從藝術(shù)畫作中提取特征顏色的新奇思路,讓名家審美來(lái)滿足挑剔的你~
GRB顏色空間
要想學(xué)會(huì)配色,首先要對(duì)顏色有一定的認(rèn)知。RGB顏色空間以R(Red:紅)、G(Green:綠)、B(Blue:藍(lán))三種基本色為基礎(chǔ),進(jìn)行不同程度的疊加,產(chǎn)生豐富而廣泛的顏色,俗稱三基色模式。每一種顏色按其亮度的不同分為256個(gè)等級(jí),可表示256的立方16777216種不同的顏色,是計(jì)算機(jī)使用最廣泛的顏色空間。
將圖片中的每個(gè)像素繪制到三維空間如圖所示:
印象派
什么是印象派風(fēng)格?19世紀(jì)60年代,法國(guó)畫家克勞德·莫奈(Claude Monet)的一幅油畫《日出·印象》因?yàn)檫^(guò)于粗糙、隨便,受到一位記者嘲諷:“完全是憑印象胡亂畫出來(lái)的。”;又比如荷蘭后印象派畫家文森特·梵高,都是“印象主義”。隨著時(shí)間推移,印象派逐漸成為西方繪畫史上劃時(shí)代的藝術(shù)流派。印象主義采取在戶外陽(yáng)光下直接描繪景物,光影色彩豐富。文章圖形配色以這些經(jīng)歷了歷史沉淀的大師作品作為配色依據(jù),從中提取主題顏色備選成為了文章配色的一種思路。
主題顏色的提取
可從圖片中提取主題色算法有顏色量化法(Color Quantization)、聚類(Clustering)和顏色建模等方法。下圖為通過(guò)聚類算法,提取部分印象派畫作主題色,以十六進(jìn)制表示。圖1| 莫奈名畫圖2 |梵高名畫
從圖片中提取主題顏色,取決于圖片顏色本身的組成,一般選取顏色對(duì)比分明的圖片效果較好,同時(shí)因?yàn)榻M成顏色的像素一般遠(yuǎn)超過(guò)聚類數(shù),會(huì)在每個(gè)聚類中選取特征色作為主題色的組成,因此主題色的組成會(huì)根據(jù)聚類數(shù)的不同而不同。當(dāng)主題色提取完成以后,可以從中選取具有對(duì)比強(qiáng)烈的顏色進(jìn)行繪圖!
如何實(shí)現(xiàn)呢?
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 轉(zhuǎn)為十六進(jìn)制
def RGB_to_Hex(tmp):
rgb = [x * 255 for x in tmp] # 將RGB格式劃分開(kāi)來(lái)
strs = '#'
for i in rgb:
num =int(i) # 將str轉(zhuǎn)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']
參照以上方式,大師配色方法就學(xué)到手啦~對(duì)于我們文章的美觀度和準(zhǔn)確性將更進(jìn)一部分的提升,誰(shuí)說(shuō)配色不重要呢?處女座該有的挑剔你千萬(wàn)不要放過(guò)哦~
鹿明生物的知識(shí)小分享將與您常伴,歡迎關(guān)注鹿明生物公眾號(hào),更多生信知識(shí)分享不停歇哦~
猜你還想看
END
總結(jié)
以上是生活随笔為你收集整理的python配色_python语言再次解决文章配色难题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vue 浏览器调试 样式如何定位样式_浏
- 下一篇: SQLServer奇偶数的输出