别再问我Python可视化如何配色了!

简说Python

共 2388字,需浏览 5分钟

 ·

2021-09-30 14:49

我们在利用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://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)

那么,这套配色方案应用到了数据可视化中,会是怎么样呢??

用Python绘制一个饼图试试看

感觉还不错,这套配色方案我要收藏起来。如果大家觉得本文还不错,记得给个一键三连!

其实一开始,自己自定义提取图片配色也不是一点用没有,我还随带用OpenCV制作了一个拾色器。

也就是说,Python运行时只需点击,就可以获取当前图片位置的颜色。

如果大家感兴趣的话,就右下角点个赞吧,本文点赞超过30👍,火速更新!!!

图书推荐:Python爬虫与反爬虫开发从入门到精通》本书从零基础开始讲解,系统全面,案例丰富,注重实战,既适合Python程序员和爬虫爱好者阅读学习,也可以作为广大职业院校相关专业的教材或参考用书。础操作、图形处理基本操作、简单图形的绘制和对象的管理等内容。

文章点赞超过100+

我将在个人视频号直播(老表Max)

带大家一起进行项目实战复现

赠送对应图书1本



扫码即可加我微信

老表朋友圈经常有赠书/红包福利活动


学习更多:
整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了
点赞”就是对博主最大的支持 

浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报