我們在利用Python進行數據可視化時,有著大量的高質量庫可以用,比如: Matplotlib 、 seaborn 、 Plotly 、 Bokeh 、ggplot等等。但圖表好不好看,配色占一半。如果沒有良好的審美觀,很容易做出來的東西辣眼睛……
所以想做好數據可視化,就要有合適的配色方案。除了可以借鑒參考配色網站的案例,也可以自己自定義一套配色方案。
如何去自定義呢?
我倒是有一個想法,配色的美感需要培養,但在一開始可以在優秀的作品上尋找靈感,比如經典電影、海報、風景圖、Logo等等,這些都是絕佳的參考。
那么,我們用Python能不能做到呢?
答案當然是可以,畢竟Python除了不能生孩子,什么都能做!
提取圖片中的配色
在Python中對圖片進行操作,最常用的兩個模塊就是PIL和opencv了。所以一開始我的方案是,用Python庫打開圖片,然后遍歷像素顏色,最后按照色彩比例進行排序,即可得到該圖片的配色方案。
結果做到一半,我發現自己忽略了一件事。大家都知道,Python 是一門優雅的語言,簡潔的語法,強大的功能。同時它還有擁有極其豐富的第三方庫,這些庫幾乎都可以在github 或者 pypi上找到源碼。
于是我搜了一下,確實有相關的庫可以提取圖片中的配色,那我們就不用重復造輪子了。
這個模塊就是—— Haishoku ,可以用于從圖像中獲取主色調和主要配色方案。
具體用法,還是先安裝
pip install haishoku
將前文提到的海上夕陽圖,保存到本地并命名為test.png
。
from haishoku.haishoku import Haishoku
image = 'test.png'
haishoku = Haishoku.loadHaishoku(image)
導入模塊,運行代碼會返回一個Haishoku實例,你可以通過實例屬性haishoku.dominant
和 haishoku.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://img-blog.csdnimg.cn/20190222215216318.png'
haishoku = Haishoku.loadHaishoku(imagepath)
配色方案與可視化
通過前面的操作,我們就提取到了合適的配色,那么就實戰一下吧。
經典電影、海報、風景圖、Logo都是絕佳的參考對象。
所以這次,我選擇了Google的Logo,并提取到它的配色方案。
imagepath = 'google.png'
haishoku = Haishoku.loadHaishoku(imagepath)
pprint.pprint(haishoku.palette)
Haishoku.showPalette(imagepath)
那么,這套配色方案應用到了數據可視化中,會是怎么樣呢??
-
模塊
+關注
關注
7文章
2771瀏覽量
49053 -
源碼
+關注
關注
8文章
665瀏覽量
30056 -
可視化
+關注
關注
1文章
1231瀏覽量
21528 -
python
+關注
關注
56文章
4822瀏覽量
85857
發布評論請先 登錄
相關推薦
三維可視化的應用和優勢
使用Python可視化數據,機器人開發編程
全網最全數據可視化配色指南都在這!
使用arduino和python可視化你的比特幣收益和損失

使用Python來收集、處理和可視化人口數據

評論