@Hayk301

Как вывести график этой программы на PyQt5?

Как вывести график этой программы на PyQt5?
fd.plot(25) - выводит график с 25 наиболее часто встречающими словами

5eb387ead777c058947496.png

import requests
from bs4 import BeautifulSoup
from nltk.tokenize import RegexpTokenizer
import nltk
import io
nltk.download('stopwords')
from nltk.corpus import stopwords
import matplotlib.pyplot as plt
from stop_words import get_stop_words
 
r = requests.get('https://www.gutenberg.org/files/2701/2701-h/2701-h.htm')
# Извлечение HTML
html = r.text
# Создаём BeautifulSoup из HTML
soup = BeautifulSoup(html, "html5lib")
 
# Получаем текст
 
text = soup.get_text()
# Создаём tokenizer, выкидывая знаки пунктуации
tokenizer = RegexpTokenizer('\w+')
 
# Создаём tokens
tokens = tokenizer.tokenize(text)
 
# Создаем новый list
words = []
 
# Перебираем список
 
for word in tokens:
    words.append(word.lower())
 
# Получаем английские стоп-слова и выводим некоторые из них
sw = nltk.corpus.stopwords.words('english')
with io.open("STOP_EN.TXT", "r", encoding='utf-8') as myfile:
    data = myfile.read().splitlines()
sw.extend(data)
data2 = get_stop_words('en')
sw.extend(data2) 
# Создаем новый list
words_ns = []
 
for word in words:
    if word not in sw:
        words_ns.append(word)
 
# создаем график плотности ключевых слов
fd = nltk.FreqDist(words_ns)
total = fd.N()
for wordo in fd:
    fd[wordo] /= float(total)/100
fd.plot(25)
  • Вопрос задан
  • 647 просмотров
Пригласить эксперта
Ответы на вопрос 1
sanya84
@sanya84
Фанатик Python 3
Как сохранить изображение я разобрался а вот как отменить показ pyplot не смог)
import sys
from PyQt5.QtWidgets import QWidget, QLabel
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication


import requests
from bs4 import BeautifulSoup
from nltk.tokenize import RegexpTokenizer
import nltk
import io
nltk.download('stopwords')
from nltk.corpus import stopwords
import matplotlib.pyplot as pyplot
from stop_words import get_stop_words

r = requests.get('https://www.gutenberg.org/files/2701/2701-h/2701-h.htm')
# Извлечение HTML
html = r.text
# Создаём BeautifulSoup из HTML
soup = BeautifulSoup(html, "html5lib")

# Получаем текст

text = soup.get_text()
# Создаём tokenizer, выкидывая знаки пунктуации
tokenizer = RegexpTokenizer('\w+')

# Создаём tokens
tokens = tokenizer.tokenize(text)

# Создаем новый list
words = []

# Перебираем список

for word in tokens:
    words.append(word.lower())

# Получаем английские стоп-слова и выводим некоторые из них
sw = nltk.corpus.stopwords.words('english')
with io.open("STOP_EN.txt", "r", encoding='utf-8') as myfile:
    data = myfile.read().splitlines()
sw.extend(data)
data2 = get_stop_words('en')
sw.extend(data2)
# Создаем новый list
words_ns = []

for word in words:
    if word not in sw:
        words_ns.append(word)

# создаем график плотности ключевых слов
fd = nltk.FreqDist(words_ns)
total = fd.N()
for wordo in fd:
    fd[wordo] /= float(total)/100

fd.plot(25)
pyplot.savefig("image.png")


class ImageViewer(QWidget):
    def __init__(self):
        super().__init__()

        image_label = QLabel(self)
        pixmap = QPixmap("image.png")
        image_label.setPixmap(pixmap)

        self.resize(pixmap.width(), pixmap.height())  # fit window to the image
        self.setWindowTitle('График функции')


def main():
    app = QApplication(sys.argv)
    image_viewer = ImageViewer()
    image_viewer.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы