import sys

from PySide2 import QtWidgets, QtCore
from PySide2.QtCharts import QtCharts


class App(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(App, self).__init__(parent)

        # set up chart
        self.chart = QtCharts.QChart()

        # add axis
        self.xAxis = QtCharts.QValueAxis()
        self.xAxis.setRange(-2, 2)
        self.chart.addAxis(self.xAxis, QtCore.Qt.AlignBottom)

        self.leftAxis = QtCharts.QValueAxis()
        self.leftAxis.setRange(-4.5, 2.5)
        self.chart.addAxis(self.leftAxis, QtCore.Qt.AlignLeft)

        # add rectangle
        self.rectangle = self.createRectangle()
        self.chart.addSeries(self.rectangle)
        self.rectangle.attachAxis(self.xAxis)
        self.rectangle.attachAxis(self.rightAxis)

        # place chart on central widget
        self.layout = QtWidgets.QVBoxLayout()

        self.graphicsView = QtCharts.QChartView(self.chart)

        self.layout.addWidget(self.graphicsView)
        self.setLayout(self.layout)
        return

    def createRectangle(self):
        # create lower and upper series
        lowerLine = QtCharts.QLineSeries()
        lowerLine.append(0, -3.5)
        lowerLine.append(1, -3.5)

        upperLine = QtCharts.QLineSeries()
        upperLine.append(0, -2.5)
        upperLine.append(1, -2.5)

        # create area series
        areaSeries = QtCharts.QAreaSeries()
        areaSeries.setLowerSeries(lowerLine)
        areaSeries.setUpperSeries(upperLine)

        return areaSeries


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)

    main = App()
    main.show()

    app.exec_()
