Способы генерации частотно-частотного сюжета с Python? - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть файл, который содержит слово и частоту его появления.Я хотел бы создать своего рода сюжет;Я ищу некий «пузырьковый» график.Идея состоит в том, что размер этих пузырьков соответствует относительным частотам, и соответствующее слово помечено на этих пузырьках.Кто-нибудь знает, можно ли это сделать с помощью стандартного matplotlib или чего-нибудь подобного?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Допустим, у вас есть данные частоты в dict data

Следующий код должен работать

import os

from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt

data = {
    'Bla': 10,
    'Bl': 2,
    'cold' : 9,
    'random': 6
}
wordcloud = WordCloud(max_font_size=40).generate(" ".join([(k + ' ') * v for k,v in data.items()]))
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
0 голосов
/ 28 ноября 2018

Есть много библиотек там .

Вот пример из WordCloud

#!/usr/bin/env python
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""

import os

from os import path
from wordcloud import WordCloud

# using word frequency list:
#word_freq = open("/tmp/word_freq.txt").read()
# say it looks like this:
word_freq = {'apple': 4, 'banana': 1, 'melon': 2, 'strawberry': 3, 'grape': 8}
text = " ".join([(k + " ")*v for k,v in word_freq.items()])

# Generate a word cloud image
wordcloud = WordCloud().generate(text)


# Display the generated image:
# the matplotlib way:
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")

# lower max_font_size
wordcloud = WordCloud(max_font_size=40).generate(text)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

# The pil way (if you don't have matplotlib)
# image = wordcloud.to_image()
# image.show()

WordCloud из другого текста: wordcloud

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...