Przejdź do treści

#001 Chmura słów (word cloud)

  • Wykresy
  • 3 min read

Chmura słów (ang. word cloud) to specyficzny sposób prezentowania danych tekstowych. Im dane słowo częściej pojawia się w tekście, tym jest większe na wizualizacji.

Jeszcze niedawno chmury słów były wykorzystywane np. na blogach lub stronach internetowych przy grafikach pokazujących, które słowo jest wyszukiwane najczęściej. Natomiast ostatnio coraz rzadziej widać ich wykorzystanie.

Bardzo często kolory używane w takich rodzajach wykresów są pozbawione znaczenia i mają być przede wszystkim przyjemne dla oka. Niemniej jednak w bardzo prosty sposób można do chmury słów dodać tzw. maskę, czyli kształt tła, na jakim ma się wyświetlać. Dzięki temu możecie polepszyć swoje prezentacje i bardziej zaciekawić publiczność formą prezentacji danych tekstowych.

Nakładanie maski na chmurę

Poniżej użyłem tekstów piosenek Beyonce z płyty „Dangerously In Love” przy wykorzystaniu chmury słów na dwóch różnych maskach.

Przykład 1. Na lewo maska Beyonce, na prawo chmura słów
Przykład 2. Na lewo maska logo Santandera, na prawo chmura słów

Mam nadzieję, że podoba Wam się pomysł pokazywania danych na tle logo Waszych firm :).

Pamiętajcie jednak o głównej wadzie tego rodzaju wykresów: nie mają dużej dokładności, są tylko poglądowe i najczęściej używane ze względów estetycznych. Natomiast jestem pewien, że wzbogacą historie, które będziecie chcieli opowiedzieć innym i przykuć wzrok w waszych prezentacjach.

Kod PYTHON:

Wczytanie odpowiednich bibliotek:

#import libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

from os import path, getcwd
from PIL import Image
from wordcloud import WordCloud, ImageColorGenerator

Wczytanie danych tekstowych (link do danych):

filtered_texts = pd.read_fwf('Beyonce_Dangerously_In_Love.txt')
text = ' '.join(filtered_texts['"Crazy In Love"'])

Kod do wygenerowania wykresu (w podkreślonej linii definiujemy jaki kolor tła, ile najczęstszych słów ma brać pod uwagę, jaką maskę tła wybieramy oraz jaka ma być maksymalna czcionka):

# read the mask; image taken from https://pixabay.com/pl/sylwetka-kobieta-dziewczyna-wyci%C4%85%C4%87-313666/
mask = np.array(Image.open(path.join(getcwd(), "silhouette-313666_1280.jpg")))
wc = WordCloud(background_color="white", max_words=500, mask=mask, max_font_size=60, random_state=2019)
# generate word cloud
wc.generate(text)
# create coloring from image
image_colors = ImageColorGenerator(mask)
image_colors.default_color = [0,0,0]
#plot wordcloud
plt.figure(figsize=[10,10])
plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
plt.axis("off");

Cały kod w języku Python możecie znaleźć na moim profilu GitHub: https://github.com/MamczurMiroslaw/chart001_wordcloud/blob/master/WordCloud_Beyonce.ipynb

W razie wątpliwości skorzystajcie z dokumentacji biblioteki: https://github.com/amueller/word_cloud

Pozdrawiam serdecznie,

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Spodobało Ci się? Udostępnij ten post w social mediach! ❤️❤️❤️