您好,登錄后才能下訂單哦!
這篇“Python可視化技巧實例代碼分析”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“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
我們調(diào)用的是extcolors模塊來從圖片中提取顏色,輸出的結(jié)果是RGB形式呈現(xiàn)出來的顏色,代碼如下:
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)
我們將上述的結(jié)果整合成一個DataFrame數(shù)據(jù)集,代碼如下:
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轉(zhuǎn)換成十六進制的顏色 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
我們嘗試調(diào)用上面我們自定義的函數(shù),輸出的結(jié)果至DataFrame數(shù)據(jù)集當中。
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
從出來的餅圖中顯示了每種不同顏色的占比,我們更進一步將原圖放置在圓環(huán)當中。
imagebox = OffsetImage(img, zoom=2.3) ab = AnnotationBbox(imagebox, (0, 0)) ax1.add_artist(ab)
output
最后制作一張調(diào)色盤,將原圖中的各種不同顏色都羅列開來,代碼如下:
## 調(diào)色盤 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
這一塊兒是實戰(zhàn)環(huán)節(jié),我們將上述所有的代碼封裝成一個完整的函數(shù)。
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
以上就是關(guān)于“Python可視化技巧實例代碼分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。