接下來小編來給大家分享一種有意思的數據可視化方法,便是如何運用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
綜上所述,這篇文章就給大家介紹到這里了,希望可以給各位讀者帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02