Kongsi teknik visualisasi Python yang menarik

WBOY
Lepaskan: 2023-04-12 08:22:14
ke hadapan
1717 orang telah melayarinya

Kongsi teknik visualisasi Python yang menarik

Seperti yang ditunjukkan di bawah:

Kongsi teknik visualisasi Python yang menarik

Terdapat pelbagai warna dalam contoh foto, kami akan menggunakan Python to The visualization module dan modul opencv mengenal pasti semua elemen warna dalam gambar dan menambahnya pada padanan warna carta visual.

Import modul dan muatkan imej

Seperti biasa, langkah pertama ialah mengimport modul Modul yang digunakan untuk visualisasi ialah modul matplotlib Dalam jadual peta warna, jadi untuk menggunakan modul peta warna, ia juga perlu diimport.

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
Salin selepas log masuk

Kemudian mari kita memuatkan imej dahulu Kodnya adalah seperti berikut:

input_name = 'test_1.png'
img = plt.imread(input_name)
plt.imshow(img)
plt.axis('off')
plt.show()
output
Salin selepas log masuk

Kongsi teknik visualisasi Python yang menarik

Ekstrak warna dan sepadukannya ke dalam jadual

Kami memanggil modul extcolors untuk mengekstrak warna daripada imej Hasil output ialah warna yang dibentangkan dalam bentuk RGB Kod adalah seperti berikut:

colors_x = extcolors.extract_from_path(img_url, tolerance=12, limit = 12)
colors_x
Salin selepas log masuk

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)
Salin selepas log masuk
.

Kami akan Hasilnya disepadukan ke dalam set data DataFrame Kodnya adalah seperti berikut:

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
Salin selepas log masuk

Kami cuba memanggil fungsi tersuai kami di atas dan mengeluarkan hasilnya kepada set data DataFrame.

df_color = color_to_df(colors_x)
df_color
Salin selepas log masuk

output

Kongsi teknik visualisasi Python yang menarik

Melukis carta

Langkah seterusnya ialah melukis carta, menggunakan modul matplotlib seperti berikut:

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()
Salin selepas log masuk

output

Kongsi teknik visualisasi Python yang menarik

Carta pai yang terhasil menunjukkan perkadaran setiap warna yang berbeza Kami mengubah lagi imej asal yang diletakkan di dalam gelang .

imagebox = OffsetImage(img, zoom=2.3)
ab = AnnotationBbox(imagebox, (0, 0))
ax1.add_artist(ab)
Salin selepas log masuk

output

Kongsi teknik visualisasi Python yang menarik

Akhir sekali, buat palet warna untuk menyenaraikan semua warna yang berbeza dalam imej asal Kodnya adalah seperti berikut:

## 调色盘
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()
Salin selepas log masuk

output

Kongsi teknik visualisasi Python yang menarik

Pautan praktikal

Ini adalah pautan sebenar Kami merangkumkan semua kod di atas ke dalam fungsi yang lengkap.

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)
Salin selepas log masuk

output

Kongsi teknik visualisasi Python yang menarik


Atas ialah kandungan terperinci Kongsi teknik visualisasi Python yang menarik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan