Построение двух частотных списков НЛТК - PullRequest
0 голосов
/ 21 октября 2018

Я следую учебному пособию по стилометрии, которое можно найти здесь ( softwarehistorian.com ).Это использует matplotlib для построения частотного распределения некоторого текста.Соответствующий код приведен ниже:

for author in authors:
tokens = nltk.word_tokenize(federalist_by_author[author])

# Filter out punctuation
federalist_by_author_tokens[author] = ([token for token in tokens
                                        if any(c.isalpha() for c in token)])

# Get a distribution of token lengths
token_lengths = [len(token) for token in federalist_by_author_tokens[author]]
federalist_by_author_length_distributions[author] = nltk.FreqDist(token_lengths)
federalist_by_author_length_distributions[author].plot(15, title=author)

К сожалению, попробуйте, как я мог бы, я не могу наложить эти распределения на один и тот же pyplot - использование этого кода просто открывает новый график для каждогоАвтор по одному, а не обычное поведение matplotlib 'plt.plot ()', добавляющее их к одному и тому же pyplot, и это то, что я хотел бы.

Есть идеи, как это сделать?

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Подобно этому вопросу , который был задан несколькими часами ранее, вам нужно будет обмануть функцию show() функции nltk, чтобы она не вступала в силу путем построения графиков в интерактивном режиме:

# turn interactive on
plt.ion()
# your code :
for foo in bars:
    frqdst = nltk.FreqDist(...)
    frqdst.plot(...)
# turn interactive off
plt.ioff()
plt.show()
0 голосов
/ 21 октября 2018

Я не вижу ничего в источнике FreqDist, которое заставило бы открыть новое окно.(Давайте пока проигнорируем, что источник использует pylab вместо pyplot без веской причины; это очень плохая практика).

Я подозреваю, что происходит, что последний вызов pylab.show() всплываетвверх окно фигуры с первым графиком и блокирует, пока эта первая фигура не будет закрыта.В этом случае вызов plt.ion() в начале для включения интерактивного режима может сделать вызов show() неблокирующим, и вы получите свои графики на одном и том же рисунке, как и ожидалось.

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