接下来小编来给大家分享一种有意思的数据可视化方法,便是如何运用Python语言表达即从照片中提取颜色随后制作成可视化图表,有兴趣的话可以试一试。
今天小编来为大家分享一个有趣的可视化技巧,如何从图片中提取颜色然后绘制成可视化图表,如下图所示
在示例照片当中有着各种各样的颜色,我们将通过Python中的可视化模块以及opencv模块来识别出图片当中所有的颜色要素,并且将其添加到可视化图表的配色当中
导入模块并加载图片
那么按照惯例,第一步一般都是导入模块,可视化用到的模块是matplotlib模块,我们将图片中的颜色抽取出来之后会保存在颜色映射表中,所以要使用到colormap模块,同样也需要导入进来
import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.patches as patches import matplotlib.image as mpimg from PIL import Image from matplotlib.offsetbox import OffsetImage,AnnotationBbox import cv2 import extcolors from colormap import rgb2hex
然后我们先来加载一下图片,代码如下
input_name='test_1.png' img=plt.imread(input_name) plt.imshow(img) plt.axis('off') plt.show()
output
提取颜色并整合成表格
我们调用的是extcolors模块来从图片中提取颜色,输出的结果是RGB形式呈现出来的颜色,代码如下
colors_x=extcolors.extract_from_path(img_url,tolerance=12,limit=12) colors_x
output
([((3,107,144),180316),
((17,129,140),139930),
((89,126,118),134080),
((125,148,154),20636),
((63,112,126),18728),
((207,220,226),11037),
((255,255,255),7496),
((28,80,117),4972),
((166,191,198),4327),
((60,150,140),4197),
((90,94,59),3313),
((56,66,39),1669)],
538200)
我们将上述的结果整合成一个DataFrame数据集,代码如下
def color_to_df(input_color): colors_pre_list=str(input_color).replace('([(','').split(',(')[0:-1] df_rgb=[i.split('),')[0]+')'for i in colors_pre_list] df_percent=[i.split('),')[1].replace(')','')for i in colors_pre_list] #将RGB转换成十六进制的颜色 df_color_up=[rgb2hex(int(i.split(",")[0].replace("(","")), int(i.split(",")[1]), int(i.split(",")[2].replace(")","")))for i in df_rgb] df=pd.DataFrame(zip(df_color_up,df_percent),columns=['c_code','occurence']) return df
我们尝试调用上面我们自定义的函数,输出的结果至DataFrame数据集当中
df_color=color_to_df(colors_x) df_color
output
绘制图表
接下来便是绘制图表的阶段了,用到的是matplotlib模块,代码如下
fig,ax=plt.subplots(figsize=(90,90),dpi=10) wedges,text=ax.pie(list_precent, labels=text_c, labeldistance=1.05, colors=list_color, textprops={'fontsize':120,'color':'black'} ) plt.setp(wedges,width=0.3) ax.set_aspect("equal") fig.set_facecolor('white') plt.show()
output
最后制作一张调色盘,将原图中的各种不同颜色都罗列开来,代码如下
##调色盘 x_posi,y_posi,y_posi2=160,-170,-170 for c in list_color: if list_color.index(c)<=5: y_posi+=180 rect=patches.Rectangle((x_posi,y_posi),360,160,facecolor=c) ax2.add_patch(rect) ax2.text(x=x_posi+400,y=y_posi+100,s=c,fontdict={'fontsize':190}) else: y_posi2+=180 rect=patches.Rectangle((x_posi+1000,y_posi2),360,160,facecolor=c) ax2.add_artist(rect) ax2.text(x=x_posi+1400,y=y_posi2+100,s=c,fontdict={'fontsize':190}) ax2.axis('off') fig.set_facecolor('white') plt.imshow(bg) plt.tight_layout()
output
实战环节
这一块儿是实战环节,我们将上述所有的代码封装成一个完整的函数
def exact_color(input_image,resize,tolerance,zoom): output_width=resize img=Image.open(input_image) if img.size[0]>=resize: wpercent=(output_width/float(img.size[0])) hsize=int((float(img.size[1])*float(wpercent))) img=img.resize((output_width,hsize),Image.ANTIALIAS) resize_name='resize_'+input_image img.save(resize_name) else: resize_name=input_image fig.set_facecolor('white') ax2.axis('off') bg=plt.imread('bg.png') plt.imshow(bg) plt.tight_layout() return plt.show() exact_color('test_2.png',900,12,2.5)
output
综上所述,这篇文章就给大家介绍到这里了,希望可以给各位读者带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128689.html
文中关键给大家介绍了python大大数据可视化matplotlib制做复式统计表的案例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 plt.plot()函数公式各主要参数分析 plt.plot()函数的作用是制做复式统计表,它主要参数有许多,常用的函数主要参数如下所示: plt.plot(x,y,color,linestyle,linewi...
摘要:下面,作者介绍了八种在中实现的可视化工具包,其中有些包还能用在其它语言中。当提到这些可视化工具时,我想到三个词探索数据分析。还可以选择样式,它模拟了像和等很流行的美化工具。有很多数据可视化的包,但没法说哪个是最好的。 showImg(https://segmentfault.com/img/remote/1460000019029121); 作者:Aaron Frederick 喜欢用...
摘要:当数据发生变化时,这种演变过程随之发生。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 showImg(https://segmentfault.com/img/bVbnkP1?w=751&h=558); python相关 基础概念 数据:离散的,客观事实的数字表示 信息:处理后的数据,为实际问题提供答案 - 为数据提供一种关系或一个关联后,数据就成了信...
热力地图的适用场景有叙述数据信息和空间的集中程度上,普遍有城市热力图、地区热力地图,叙述好几个自变量中间关联性多少程度上,文中关键为大家介绍了有关python热力地图完成的资料,必须的小伙伴可以借鉴一下 一、数据信息无量纲处理后的(热力地图) 1.数据信息无量纲处理后的(仅详细介绍文中需要用到的方式):min-max归一化处理 此方法应该是原始记录开展线性变换,把它投射到[0,1]中间,...
摘要:俗话说,不会使用工具来完成任务的都是进化不完全的表现,大数据时代,可视化已经深深钻进我们的生活,使用可视化工具也变的相当普遍,今天我们来总结下当下可视化工具都有哪些。是一个地图库,主要面向数据可视化用户。 俗话说,不会使用工具来完成任务的都是进化不完全的表现,大数据时代,可视化已经深深钻进我们的生活,使用可视化工具也变的相当普遍,今天我们来总结下当下可视化工具都有哪些。 showImg...
阅读 874·2023-01-14 11:38
阅读 820·2023-01-14 11:04
阅读 672·2023-01-14 10:48
阅读 1830·2023-01-14 10:34
阅读 880·2023-01-14 10:24
阅读 740·2023-01-14 10:18
阅读 469·2023-01-14 10:09
阅读 507·2023-01-14 10:02