6

I am doing GUI where there should be a widget with the following plot:

import plotly.express as px
df = px.data.tips()
fig = px.box(df, x="day", y="total_bill", color="smoker")
fig.update_traces(quartilemethod="exclusive") # or "inclusive", or "linear" by default
fig.show() 

Can you suggest something?

0

1 Answer 1

15

You can use a QtWebEngineWidgets.QWebEngineView widget to show the figure. You might need to install the PyQtWebEngine package first. Here is a small example:

from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
import plotly.express as px


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.button = QtWidgets.QPushButton('Plot', self)
        self.browser = QtWebEngineWidgets.QWebEngineView(self)

        vlayout = QtWidgets.QVBoxLayout(self)
        vlayout.addWidget(self.button, alignment=QtCore.Qt.AlignHCenter)
        vlayout.addWidget(self.browser)

        self.button.clicked.connect(self.show_graph)
        self.resize(1000,800)

    def show_graph(self):
        df = px.data.tips()
        fig = px.box(df, x="day", y="total_bill", color="smoker")
        fig.update_traces(quartilemethod="exclusive") # or "inclusive", or "linear" by default
        self.browser.setHtml(fig.to_html(include_plotlyjs='cdn'))

if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    widget = Widget()
    widget.show()
    app.exec()
Sign up to request clarification or add additional context in comments.

4 Comments

Thanks Heike, I ran it and got and error of ImportError: QtWebEngineWidgets must be imported before a QCoreApplication instance is created. any suggestion? Thanks
It looks like you are initialising the QApplication instance before importing QtWebEngineWidgets
right Heike, but how to change your code to make it work? I used the same code as you shown above. I even move from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets to beforeapp = QtWidgets.QApplication([]) inside if name == "main":, and it still not working? Thanks

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.