一款 Python 神器搞定自動化圖表配色


原文鏈接:https://mp.weixin.qq.com/s/lwvZ1SyhiOiWx2lP-Iou6Q
作者:朱小五

我們在利用Python進行數據可視化時,有着大量的高質量庫可以用,比如:MatplotlibseabornPlotlyBokehggplot等等。但圖表好不好看,配色占一半。如果沒有良好的審美觀,很容易做出來的東西辣眼睛……

所以想做好數據可視化,就要有合適的配色方案。除了可以借鑒參考配色網站的案例,也可以自己自定義一套配色方案。

如何去自定義呢?

我倒是有一個想法,配色的美感需要培養,但在一開始可以在優秀的作品上尋找靈感,比如經典電影、海報、風景圖、Logo等等,這些都是絕佳的參考。

自然風景的顏色往往令人驚艷,咱們不妨以風景圖為例。下圖是一副海上夕陽圖,通過一番操作就提取到了一套配色方案(見圖右)。

那么,我們用Python能不能做到呢?

答案當然是可以,畢竟Python除了不能生孩子,什么都能做!

提取圖片中的配色

在Python中對圖片進行操作,最常用的兩個模塊就是PIL和opencv了。所以一開始我的方案是,用Python庫打開圖片,然后遍歷像素顏色,最后按照色彩比例進行排序,即可得到該圖片的配色方案。

結果做到一半,我發現自己忽略了一件事。大家都知道,Python 是一門優雅的語言,簡潔的語法,強大的功能。同時它還有擁有極其豐富的第三方庫,這些庫幾乎都可以在github 或者 pypi上找到源碼。

於是我搜了一下,確實有相關的庫可以提取圖片中的配色,那我們就不用重復造輪子了。

這個模塊就是——Haishoku,可以用於從圖像中獲取主色調和主要配色方案。

其GitHub網址為:https://github.com/LanceGin/haishoku

具體用法,還是先安裝

pip install haishoku

將前文提到的海上夕陽圖,保存到本地並命名為test.png

from haishoku.haishoku import Haishoku
image = 'test.png'
haishoku = Haishoku.loadHaishoku(image)

導入模塊,運行代碼會返回一個Haishoku實例,你可以通過實例屬性haishoku.dominanthaishoku.palette,從而直接獲取到對應的主色調和配色方案。

主色調

首先,要怎么獲取圖片的主色調呢?

print(haishoku.dominant)

這返回了一個結構為 (R, G, B) 的元組,就是該圖片的主色調。

運行下面這行代碼

Haishoku.showDominant(image)

則會打開一個臨時文件,用來預覽主色調的顏色。

主色調(最多的顏色)

配色方案

#獲取配色方案
pprint.pprint(haishoku.palette)

返回一個結構為:[(R, G, B), (R, G, B), …] 最大長度為8的數組。

這里使用了pprint模塊,對於這種多層嵌套的元組,正好可以美觀地打印出來。

運行下面這行代碼

Haishoku.showPalette(image)

則會打開一個臨時文件,用來預覽圖片配色方案。(不會保存在本地)

配色方案

就這樣,只需幾行代碼就提取到圖片中的配色方案,是不是很簡單。

另外,Haishoku庫從v1.1.4版本后,支持從 url 中直接加載圖像。

imagepath = 'https://-blog.csdn.cn/20190222215216318.png'    haishoku = Haishoku.loadHaishoku(imagepath)

配色方案與可視化

通過前面的操作,我們就提取到了合適的配色,那么就實戰一下吧。

經典電影、海報、風景圖、Logo都是絕佳的參考對象。

所以這次,我選擇了Google的Logo,並提取到它的配色方案。

imagepath = 'google.png'

haishoku = Haishoku.loadHaishoku(imagepath)

pprint.pprint(haishoku.palette)

Haishoku.showPalette(imagepath)

那么,這套配色方案應用到了數據可視化中,會是怎么樣呢??

用Python繪制一個餅圖試試看

感覺還不錯,這套配色方案我要收藏起來。如果大家覺得本文還不錯,記得給個一鍵三連!

本文的代碼和文件打包:https://wwe.lanzoui.com/iepThvcl9zi

其實一開始,自己自定義提取圖片配色也不是一點用沒有,我還隨帶用OpenCV制作了一個拾色器。

也就是說,Python運行時只需點擊,就可以獲取當前圖片位置的顏色。

如果大家感興趣的話,就右下角點個贊吧,本文點贊超過30👍,火速更新!!!


文章最后給大家介紹三個我自己寫的在線文檔:

第一個文檔PyCharm 中文指南 1.0 文檔

花了兩個多月的時間,整理了 100 個 PyCharm 的使用技巧,為了讓新手能夠直接上手,我花了很多的時間錄制了上百張 GIF 動圖,有興趣的前往在線文檔閱讀。

第二個文檔PyCharm 黑魔法指南 1.0 文檔

系統收錄各種 Python 冷門知識,Python Shell 的多樣玩法,令人瘋狂的 Python 炫技操作,Python 的超詳細進階知識解讀,非常實用的 Python 開發技巧等。

第三個文檔Python 中文指南 1.0 文檔

花了三個月時間寫的一本 適合零基礎入門 Python 的全中文教程,搭配大量的代碼案例,讓初學者對 代碼的運作效果有一個直觀感受,教程既有深度又有廣度,每篇文章都會標內容的難度,是基礎還是進階的,可供讀者進行選擇,是一本難得的 Python 中文電子教程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM