Python可視化技巧實(shí)例代碼分析

這篇“Python可視化技巧實(shí)例代碼分析”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Python可視化技巧實(shí)例代碼分析”文章吧。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、墨玉ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的墨玉網(wǎng)站制作公司

如下圖所示:

Python可視化技巧實(shí)例代碼分析

在示例照片當(dāng)中有著各種各樣的顏色,我們將通過Python中的可視化模塊以及opencv模塊來識(shí)別出圖片當(dāng)中所有的顏色要素,并且將其添加到可視化圖表的配色當(dāng)中。

導(dǎo)入模塊并加載圖片

那么按照慣例,第一步一般都是導(dǎo)入模塊,可視化用到的模塊是matplotlib模塊,我們將圖片中的顏色抽取出來之后會(huì)保存在顏色映射表中,所以要使用到colormap模塊,同樣也需要導(dǎo)入進(jìn)來。

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é)果整合成一個(gè)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)換成十六進(jì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ù)集當(dāng)中。

df_color = color_to_df(colors_x)
df_color

output

Python可視化技巧實(shí)例代碼分析

繪制圖表

接下來便是繪制圖表的階段了,用到的是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

Python可視化技巧實(shí)例代碼分析

從出來的餅圖中顯示了每種不同顏色的占比,我們更進(jìn)一步將原圖放置在圓環(huán)當(dāng)中。

imagebox = OffsetImage(img, zoom=2.3)
ab = AnnotationBbox(imagebox, (0, 0))
ax1.add_artist(ab)

output

Python可視化技巧實(shí)例代碼分析

最后制作一張調(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

Python可視化技巧實(shí)例代碼分析

實(shí)戰(zhàn)環(huán)節(jié)

這一塊兒是實(shí)戰(zhàn)環(huán)節(jié),我們將上述所有的代碼封裝成一個(gè)完整的函數(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

Python可視化技巧實(shí)例代碼分析

以上就是關(guān)于“Python可視化技巧實(shí)例代碼分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享名稱:Python可視化技巧實(shí)例代碼分析
當(dāng)前地址:http://muchs.cn/article14/jcjcde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、動(dòng)態(tài)網(wǎng)站App設(shè)計(jì)、網(wǎng)站建設(shè)移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司