Можете ли вы отображать и отображать HTML в окне matplotlib вместо браузера? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть программа, которая генерирует графики и отображает их пользователю с помощью matplotlib.Сейчас я добавляю функцию, которая включает HTML, который генерируется из некоторых данных и изменяется.Я могу отобразить этот измененный HTML-код, используя webbrowser.open('file://' + htmlFilePath, new=2, autoraise=False), и он откроется в браузере по умолчанию или в любом браузере, настроенном для веб-браузера.

НО я действительно хотел бы отобразить этот html в окне matplotlib, которое у меня запущено, вместо того, чтобы открывать отдельное окно браузера.Есть ли способ отобразить этот HTML-код в окне matplotlib?Либо как визуализированный HTML, либо даже просто изображение HTML-страницы, которая будет отображаться браузером.

У меня не так много кода для того, что я пробовал, так как большая часть исследования stackoverflow показывает мне, как отобразить сюжет matplotlib в виде html для flask / django, что означает PLOT to HTML вместоHTML для построения.Мне не нужно конвертировать мой график в HTML, мне нужно конвертировать мой HTML в какое-то изображение или массив с нуля или что-то в этом роде, чтобы я мог отображать его как ax.imshow(htmlFilePath).Благодарю.

1 Ответ

1 голос
/ 15 марта 2019

Вы можете показать веб-браузер и фигуру matplotlib рядом друг с другом в одном окне графического интерфейса.

Например, используя PyQt5, следующее создаст окно и поместит веб-браузер слева, а рисунок matplotlib - справа.

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5 import QtWidgets
from matplotlib.backends.backend_qt5agg import FigureCanvas, NavigationToolbar2QT
from matplotlib.figure import Figure

class ApplicationWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self._main = QtWidgets.QWidget()
        self.setCentralWidget(self._main)
        layout = QtWidgets.QHBoxLayout(self._main)

        self.web = QWebEngineView()

        self.fig = Figure(figsize=(5, 3))
        self.canvas = FigureCanvas(self.fig)

        layout.addWidget(self.web)
        layout.addWidget(self.canvas)
        self.addToolBar(NavigationToolbar2QT(self.canvas, self))

        self.fill_content("<html><div>Some Html</div></html>", [1,3,2])

    def fill_content(self, html, data):
        self.web.setHtml(html)

        self.fig.clear()
        ax = self.fig.add_subplot(111)
        ax.plot(data)
        self.canvas.draw_idle()


if __name__ == "__main__":
    qapp = QtWidgets.QApplication(sys.argv)
    app = ApplicationWindow()
    app.show()
    qapp.exec_()

enter image description here

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