слова wordcloud не подходят для маски

Я пытаюсь создать облако слов из фрейма данных, где есть столбец слов и столбец для их соответствующих частот. Я также загрузил изображение, которое хочу использовать в качестве маски, например: cloud изображение

Я не могу заставить wordcloud соответствовать маске, несмотря на то, что следую показанным примерам. Вот мой код:

from PIL import Image
import pandas as pd
import numpy as np
from wordcloud import WordCloud
import matplotlib.pyplot as plt

df = pd.DataFrame({'word':['time', 'car', 'Peter\'s', 'sky', 
                           'something', 'computer', 'brain', 'plants',
                           'trees', 'Alien\'s', 'gun', 'eat'],
                   'freq':[24, 16, 16, 15,
                           14, 13, 12, 10,
                           9, 9, 5, 3]})

words = ' '.join(df['word'])

cloud_image = r"C:\Users\L\Documents\Python Scripts\cloud.png"

mask = np.array(Image.open(cloud_image))

wordcloud = WordCloud(max_words=2000,
                      width=1280, 
                      height=720,
                      mask=mask)

wordcloud.generate_from_frequencies()

fig, ax = plt.subplots(figsize=(8, 6))
ax.imshow(wordcloud, interpolation='bilinear')
ax.axis("off")
ax.imshow(mask, interpolation='bilinear')
plt.show()

person fffrost    schedule 20.05.2018    source источник


Ответы (2)


Я знаю, что этот вопрос старый, но я только что провел последний час, пытаясь заставить определенное изображение работать как маска. Основная проблема, с которой я столкнулся, заключалась в том, что изображение, которое я хотел использовать в качестве маски для своего облака слов, не имело белого (RGB 255 255 255) фона. Решение, с которым я столкнулся:

  1. Если у вашего изображения есть отдельный фон, используйте любой онлайн-инструмент, чтобы удалить цвет фона с вашего изображения. Я использовал сайт под названием Background Burner, который сделал фон моего изображения прозрачным. Однако (как я узнал) wordcloud Python обрабатывает прозрачный фон как черный.
  2. С изображением без фона используйте любой онлайн-инструмент, чтобы изменить фон (который, скорее всего, будет прозрачным) на белый. Я использовал сайт под названием LunaPic, чтобы изменить свои изображения.

В результате получается исходное изображение с белым (RGB 255 255 255) фоном. Маска wordcloud теперь будет обрабатывать ваше изображение так, как вы ожидали!

person Jeff W    schedule 26.06.2020
comment
Хорошо, что вы нашли решение. К вашему сведению, у WordCloud() есть аргумент background_color, который вы можете установить на 'white' для изображения без фона (я думаю - это было давно) - person fffrost; 26.06.2020

Как оказалось, это была просто проблема с размером/типом изображения. Он работал с другим изображением маски (хотя я ранее безуспешно пробовал два изображения, отсюда и пост).

person fffrost    schedule 20.05.2018