Beispiel #1
0
    def initUI(self):
        self.lineSeries = QtCharts.QLineSeries()
        # legend name
        # self.lineSeries.setName("trend")
        self.lineSeries.append(QtCore.QPoint(0, 0))

        pen = QtGui.QPen(QtCore.Qt.red, 6, QtCore.Qt.SolidLine)
        self.lineSeries.setPen(pen)

        self.chart = QtCharts.QChart()
        self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations)
        self.chart.setTitle("Airfoil contour analysis")
        self.chart.addSeries(self.lineSeries)

        self.chart.legend().setVisible(False)
        self.chart.legend().setAlignment(QtCore.Qt.AlignBottom)

        self.axisX = QtCharts.QValueAxis()
        self.axisY = QtCharts.QValueAxis()
        self.chart.setAxisX(self.axisX, self.lineSeries)
        self.chart.setAxisY(self.axisY, self.lineSeries)

        self.chartView = QtCharts.QChartView(self.chart)
        self.chartView.setRenderHint(QtGui.QPainter.Antialiasing)

        vlayout = QtWidgets.QVBoxLayout()
        vlayout.addWidget(self.chartView)
        self.setLayout(vlayout)
Beispiel #2
0
    def __init__(self, parent: QtWidgets.QWidget = None):
        super().__init__(QtCharts.QChart(), theme=light_theme, parent=parent)
        self.setRenderHint(QtGui.QPainter.Antialiasing)

        self.chart().legend().hide()

        self.xaxis = QtCharts.QValueAxis()
        self.xaxis.setLabelFormat("%d")
        self.yaxis = QtCharts.QValueAxis()
        self.yaxis.setVisible(False)

        self.chart().addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.chart().addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.drift1 = QtCharts.QLineSeries()
        self.drift1.setPen(QtGui.QPen(sequential[1], 1.0))
        self.chart().addSeries(self.drift1)
        self.drift1.attachAxis(self.xaxis)
        self.drift1.attachAxis(self.yaxis)

        self.drift2 = QtCharts.QLineSeries()
        self.drift2.setPen(QtGui.QPen(sequential[1], 1.0))
        self.chart().addSeries(self.drift2)
        self.drift2.attachAxis(self.xaxis)
        self.drift2.attachAxis(self.yaxis)

        self.fit = QtCharts.QSplineSeries()
        self.fit.setPen(QtGui.QPen(sequential[2], 2.0))
        self.chart().addSeries(self.fit)
        self.fit.attachAxis(self.xaxis)
        self.fit.attachAxis(self.yaxis)
Beispiel #3
0
    def __init__(self,
                 parent: Optional[QtWidgets.QWidget] = None,
                 flags: Qt.WindowFlags = Qt.Widget):
        """Initialise a new instance of the class."""
        super().__init__(parent, flags)

        self.chart_view = QtCharts.QChartView()
        self.chart_view.setRenderHint(QtGui.QPainter.Antialiasing)

        chart: QtCharts.QChart = self.chart_view.chart()
        chart.legend().setLabelColor(QtGui.QColor("#F0F0F0"))
        chart.setAnimationDuration(500)
        chart.setAnimationEasingCurve(QtCore.QEasingCurve.Linear)
        chart.setAnimationOptions(QtCharts.QChart.NoAnimation)
        chart.setBackgroundBrush(QtGui.QColor("transparent"))
        chart.setBackgroundRoundness(0.0)
        chart.setContentsMargins(-7, -7, -7, -7)
        chart.setMargins(QtCore.QMargins(10, 0, 10, 10))
        self.chart: QtCharts.QChart = chart

        layout = QtWidgets.QVBoxLayout()
        layout.setMargin(0)
        layout.addWidget(self.chart_view)
        self.setLayout(layout)

        x_axis = QtCharts.QValueAxis()
        x_axis.setRange(-CHART_DURATION, 0.0)
        y_axis = QtCharts.QValueAxis()
        self.chart.addAxis(x_axis, QtCore.Qt.AlignBottom)
        self.chart.addAxis(y_axis, QtCore.Qt.AlignLeft)
        self._style_axes()

        self._largest_y_value: float = 0.0
        self._smallest_y_value: float = sys.float_info.max
        self.__x_axis_maximum: float = 0.0
    def plot_data(self):
        # Get table information
        series = QtCharts.QLineSeries()
        for i in range(self.table.rowCount()):
            text = float(self.table.item(i, 0).text())
            number = float(self.table.item(i, 1).text())
            series.append(text, number)

        chart = QtCharts.QChart()
        chart.addSeries(series)
        #chart.legend().setAlignment(Qt.AlignLeft)

        axis_x = QtCharts.QValueAxis()
        axis_x.setTickCount(10)
        axis_x.setLabelFormat("%.2f")
        axis_x.setTitleText("Step")
        chart.addAxis(axis_x, Qt.AlignBottom)
        series.attachAxis(axis_x)

        axis_y = QtCharts.QValueAxis()
        axis_y.setTickCount(10)
        axis_y.setLabelFormat("%.2f")
        axis_y.setTitleText("v_ntot")
        chart.addAxis(axis_y, Qt.AlignLeft)
        series.attachAxis(axis_y)

        self.chart_view.setChart(chart)
Beispiel #5
0
    def __init__(self, device):
        super(MainWindow, self).__init__()

        self.series = QtCharts.QLineSeries()
        self.chart = QtCharts.QChart()
        self.chart.addSeries(self.series)
        self.axisX = QtCharts.QValueAxis()
        self.axisX.setRange(0, sampleCount)
        self.axisX.setLabelFormat("%g")
        self.axisX.setTitleText("Samples")
        self.axisY = QtCharts.QValueAxis()
        self.axisY.setRange(-1, 1)
        self.axisY.setTitleText("Audio level")
        self.chart.setAxisX(self.axisX, self.series)
        self.chart.setAxisY(self.axisY, self.series)
        self.chart.legend().hide()
        self.chart.setTitle("Data from the microphone ({})".format(device.deviceName()))

        formatAudio = QAudioFormat()
        formatAudio.setSampleRate(8000)
        formatAudio.setChannelCount(1)
        formatAudio.setSampleSize(8)
        formatAudio.setCodec("audio/pcm")
        formatAudio.setByteOrder(QAudioFormat.LittleEndian)
        formatAudio.setSampleType(QAudioFormat.UnSignedInt)

        self.audioInput = QAudioInput(device, formatAudio, self)
        self.ioDevice = self.audioInput.start()
        self.ioDevice.readyRead.connect(self._readyRead)

        self.chartView = QtCharts.QChartView(self.chart)
        self.setCentralWidget(self.chartView)

        self.buffer = [QPointF(x, 0) for x in range(sampleCount)]
        self.series.append(self.buffer)
Beispiel #6
0
    def __init_color_calibration_widget(self, parent=None):
        self.__color_calibration_widget = QGroupBox("Color Correction Options", parent)
        self.__color_calibration_widget.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
        color_calibration_layout = QVBoxLayout(self.__color_calibration_widget)

        chart_widget = QWidget(self.__color_calibration_widget)
        chart_layout = QGridLayout(chart_widget)
        self.data_fit_chart = QtCharts.QChart()
        self.data_fit_chart_view = QtCharts.QChartView(self.data_fit_chart)
        self.axis_x = QtCharts.QValueAxis()
        self.axis_x.setTitleText("Pixel Intensity")
        self.axis_x.setRange(0, 1)
        self.data_fit_chart.addAxis(self.axis_x, Qt.AlignBottom)
        self.axis_y = QtCharts.QValueAxis()
        self.axis_y.setTitleText("Voxel Height (\u03BCm)")
        self.axis_y.setRange(0, 10)
        self.data_fit_chart.addAxis(self.axis_y, Qt.AlignLeft)
        chart_layout.addWidget(self.data_fit_chart_view, 0, 0, 1, 4)
        chart_widget.setLayout(chart_layout)

        buttons_widget = QWidget(self.__color_calibration_widget)
        buttons_layout = QHBoxLayout(buttons_widget)
        analyze_data_button = QPushButton("Analyze Data")
        analyze_data_button.clicked.connect(self.analyze_images)
        self.parameters_estimation_label = QLabel(f'Estimated parameters: \u03B1 = {self.dlp_color_calibrator.optimized_parameters[0]:.3f}, \u03B2 = {self.dlp_color_calibrator.optimized_parameters[1]:.3f}, \u03B3 =  {self.dlp_color_calibrator.optimized_parameters[2]:.3f}',
                                buttons_widget)
        buttons_layout.addWidget(analyze_data_button)
        buttons_layout.addWidget(self.parameters_estimation_label)
        buttons_widget.setLayout(buttons_layout)
        color_calibration_layout.addWidget(chart_widget)
        color_calibration_layout.addWidget(buttons_widget)
        self.__color_calibration_widget.setLayout(color_calibration_layout)
Beispiel #7
0
    def __init__(self, title: str = None, parent: QtWidgets.QWidget = None):
        super().__init__(QtCharts.QChart(), theme=light_theme, parent=parent)
        self.setMinimumSize(QtCore.QSize(640, 320))
        self.setRenderHint(QtGui.QPainter.Antialiasing)

        if title is not None:
            self.chart().setTitle(title)

        self.chart().legend().hide()

        self._xaxis = QtCharts.QValueAxis()  # Alignment axis
        self._xaxis.setVisible(False)
        self.xaxis = QtCharts.QValueAxis()  # Value axis
        self.xaxis.setGridLineVisible(False)

        self.yaxis = QtCharts.QValueAxis()
        self.yaxis.setGridLineVisible(False)
        self.yaxis.setLabelFormat("%d")

        self.addAxis(self._xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.series = QtCharts.QBarSeries()
        self.series.setBarWidth(1.0)

        self.chart().addSeries(self.series)
        self.series.attachAxis(self._xaxis)
        self.series.attachAxis(self.yaxis)
Beispiel #8
0
    def add_series(self, name, columns):
        # Create QLineSeries
        self.series = QtCharts.QLineSeries()
        self.series.setName(name)

        # Filling QLineSeries
        for i in range(len(self.model)):
            # Getting the data
            x, y,_,_ = self.model[i][0]

            self.series.append(int(x), int(y))

        self.chart.addSeries(self.series)
        self.chart.legend().setVisible(False)

        # Setting X-axis
        self.axis_x = QtCharts.QValueAxis()
        self.axis_x.setTickCount(len(self.model))

        self.axis_x.setTitleText("hour")
        self.axis_x.setLabelFormat("%d:00")
        self.chart.addAxis(self.axis_x, Qt.AlignBottom)
        self.series.attachAxis(self.axis_x)
        # Setting Y-axis
        self.axis_y = QtCharts.QValueAxis()
        self.axis_y.setTickCount(1.0)
        self.axis_y.setLabelFormat("%.1f")
        self.axis_y.setTitleText("temperature")
        self.chart.addAxis(self.axis_y, Qt.AlignLeft)
        self.series.attachAxis(self.axis_y)
Beispiel #9
0
    def add_series(
        self, name, columns, chart
    ):  #выходит add.series так написан что по Ох автоматически будет дата?
        """ Формирует название оси """
        self.series = QtCharts.QLineSeries()
        self.series.setName(name)
        """ формирует 1 массив series из 2 столбцов, добавляя в него данные из Х и У """
        for i in range(self.model.rowCount()):
            """ получение даты """
            t = self.model.index(i, 0).data(
            )  #типа нулевой столбец(дата) и в нем по строкам  будем переходить с помощью цикла этого
            date_fmt = "yyyy-MM-dd HH:mm:ss.zzz"  #но вообще тут уже прописано как бы что в нулевом столбце будет дата

            #x = QDateTime().fromString(t, date_fmt).toSecsSinceEpoch()
            x = float(QDateTime().fromString(t, date_fmt).toMSecsSinceEpoch())
            #x = QDateTime().fromString("2019-01-01 12:00:00.100", date_fmt).toMSecsSinceEpoch()

            # не работает:
            # QLineSeries.append(x, y) ждёт float-ов, а не QDateTime()
            # x = QDateTime().fromString(t, date_fmt)

            y = float(self.model.index(i, columns[1]).data())

            # print(x, y)

            # потому что сложно рисовать график с минусовой осью ???
            if x > 0 and y > 0:
                self.series.append(x, y)

        chart.addSeries(self.series)
        """ задание оси X """
        #self.axis_x = QtCharts.QDateTimeAxis()
        self.axis_x = QtCharts.QValueAxis()
        """ Класс QDateTimeAxis добавляет даты и время к оси диаграммы. """
        self.axis_x.setTickCount(6)
        """setTickCounе( int count ) устанавливает количество отметок на оси для подсчета, на оси Х будет 10 штрихов """
        #self.axis_x.setFormat("dd.MM.yy hh:mm:ss")
        """ setFormat - задаёт формат вывод текстового представления значения. """
        self.axis_x.setTitleText("Дата")
        chart.addAxis(self.axis_x, Qt.AlignBottom)
        """ Добавляет ось оси к диаграмме, выровненной, как указано выравниванием. """
        self.series.attachAxis(self.axis_x)
        """ Возвращает, true если ось была успешно присоединена, false в противном случае. """
        """ задание оси Y """
        self.axis_y = QtCharts.QValueAxis()
        """ Класс QValueAxis добавляет значения к осям диаграммы. """
        self.axis_y.setTickCount(6)
        """ Свойство setTickCount содержит количество отметок на оси. Это указывает, сколько линий сетки нарисовано на графике. """
        self.axis_y.setLabelFormat("%.2f")
        """ Свойство setLabelFormat содержит формат метки оси. """
        self.axis_y.setTitleText(
            name
        )  #изменила название оси, что ифами написать, как обратиться к имени той колонки которую я в параметры передаю?
        chart.addAxis(self.axis_y, Qt.AlignLeft)
        self.series.attachAxis(self.axis_y)
        """ получение цвета из QC  hart для использования в QTableView, будет выделять столбец таблицы тем же цветом что и линия в диарамме!! """
        self.model.color = "{}".format(self.series.pen().color().name())
Beispiel #10
0
    def __init__(self, parent: QtWidgets.QGraphicsItem = None):
        super().__init__(parent)
        self.setMinimumSize(640, 320)

        self.xaxis = QtCharts.QValueAxis()
        self.xaxis.setGridLineVisible(False)
        self.xaxis.rangeChanged.connect(self.updateYRange)
        self.xaxis.setLabelsVisible(False)
        self.yaxis = QtCharts.QValueAxis()
        self.yaxis.setGridLineVisible(False)
        self.yaxis.setLabelFormat("%.2g")
        self.yaxis.setTitleText("Response")

        self.addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.yvalues: np.ndarray = None

        self.series = QtCharts.QLineSeries()
        self.series.setPen(QtGui.QPen(QtCore.Qt.black, 1.0))
        self.series.setUseOpenGL(True)  # Speed for many line?
        self.addSeries(self.series)
        self.series.attachAxis(self.xaxis)
        self.series.attachAxis(self.yaxis)

        self.scatter_series = QtCharts.QScatterSeries()
        self.scatter_series.setMarkerSize(5)
        self.scatter_series.setColor(QtCore.Qt.red)
        self.scatter_series.setUseOpenGL(True)
        self.addSeries(self.scatter_series)
        self.scatter_series.attachAxis(self.xaxis)
        self.scatter_series.attachAxis(self.yaxis)

        self.ub = QtCharts.QLineSeries()
        self.lc = QtCharts.QLineSeries()
        self.ld = QtCharts.QLineSeries()

        for series, color, label in zip(
            [self.ub, self.lc, self.ld],
            [QtGui.QColor(255, 0, 0), QtGui.QColor(0, 255, 0), QtGui.QColor(0, 0, 255)],
            ["μb", "Lc", "Ld"],
        ):
            series.setPen(QtGui.QPen(color, 1.0, QtCore.Qt.DashLine))
            series.setName(label)
            series.setUseOpenGL(True)
            self.addSeries(series)
            series.attachAxis(self.xaxis)
            series.attachAxis(self.yaxis)

        self.vlines: List[QtCharts.QLineSeries] = []

        # Clean legend
        self.legend().setMarkerShape(QtCharts.QLegend.MarkerShapeFromSeries)
        self.legend().markers(self.series)[0].setVisible(False)
        self.legend().markers(self.scatter_series)[0].setVisible(False)
Beispiel #11
0
    def add_lineSeries_frames(self, input_widget):

        name, ext = input_widget.objectName().split('.')

        for obj in self.list_obj:
            if obj.name == name:

                self.axisX_vmaf = QtCharts.QValueAxis()
                self.axisY_vmaf = QtCharts.QValueAxis()

                try:
                    self.chart_vmaf.addSeries(
                        self.vmafls_frame_dict[obj.filename])
                    self.chart_vmaf.addAxis(self.axisX_vmaf,
                                            QtCore.Qt.AlignBottom)
                    self.chart_vmaf.addAxis(self.axisY_vmaf,
                                            QtCore.Qt.AlignLeft)
                    self.chart_vmaf.createDefaultAxes()
                except:
                    pass

                try:
                    self.chart_psnr.addSeries(
                        self.psnrls_frame_dict[obj.filename])
                    self.chart_psnr.addAxis(self.axisX_vmaf,
                                            QtCore.Qt.AlignBottom)
                    self.chart_psnr.addAxis(self.axisY_vmaf,
                                            QtCore.Qt.AlignLeft)
                    self.chart_psnr.createDefaultAxes()
                except:
                    pass

                try:
                    self.chart_bitrate.addSeries(
                        self.bitratels_frame_dict[obj.filename])
                    self.chart_bitrate.addAxis(self.axisX_vmaf,
                                               QtCore.Qt.AlignBottom)
                    self.chart_bitrate.addAxis(self.axisY_vmaf,
                                               QtCore.Qt.AlignLeft)
                    self.chart_bitrate.createDefaultAxes()
                except:
                    pass

        if self.ref_path != None:
            if self.ref_obj.filename == input_widget.objectName():

                self.chart_bitrate.addSeries(self.ref_bitrate_frame_ls)

                self.axisX = QtCharts.QValueAxis()
                self.axisY = QtCharts.QValueAxis()
                self.chart_bitrate.addAxis(self.axisX, QtCore.Qt.AlignBottom)
                self.chart_bitrate.addAxis(self.axisY, QtCore.Qt.AlignLeft)
                self.chart_bitrate.createDefaultAxes()
Beispiel #12
0
    def __init__(self, title: str = None, parent: QtWidgets.QWidget = None):
        super().__init__(QtCharts.QChart(), theme=light_theme, parent=parent)
        self.setRubberBand(QtCharts.QChartView.RectangleRubberBand)
        self.setMinimumSize(QtCore.QSize(640, 480))
        self.setRenderHint(QtGui.QPainter.Antialiasing)

        if title is not None:
            self.chart().setTitle(title)

        self.chart().legend().hide()

        self.xaxis = QtCharts.QValueAxis()
        self.yaxis = QtCharts.QValueAxis()

        self.addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.label_series = QtCharts.QScatterSeries()
        self.label_series.append(0, 0)
        self.label_series.setBrush(
            QtGui.QBrush(QtCore.Qt.black, QtCore.Qt.NoBrush))
        self.label_series.setPointLabelsFormat("(@xPoint, @yPoint)")
        self.label_series.setPointLabelsColor(light_theme["text"])
        self.label_series.setVisible(False)

        self.chart().addSeries(self.label_series)
        self.label_series.attachAxis(self.xaxis)
        self.label_series.attachAxis(self.yaxis)

        self.line = QtCharts.QLineSeries()
        self.line.setPen(QtGui.QPen(sequential[1], 1.5))
        # self.line.setColor(QtCore.Qt.red)

        self.chart().addSeries(self.line)
        self.line.attachAxis(self.xaxis)
        self.line.attachAxis(self.yaxis)

        self.series = QtCharts.QScatterSeries()
        self.series.setPen(QtGui.QPen(sequential[1], 1.5))
        self.series.setBrush(QtGui.QBrush(highlights[1]))
        self.series.setMarkerSize(12)

        self.chart().addSeries(self.series)
        self.series.attachAxis(self.xaxis)
        self.series.attachAxis(self.yaxis)

        self.series.hovered.connect(self.showPointPosition)

        self.label = QtWidgets.QGraphicsTextItem()
        self.label.setPlainText("hats")
        self.label.setFlag(QtWidgets.QGraphicsItem.ItemIgnoresTransformations)
        self.chart().scene().addItem(self.label)
        self.chart().plotAreaChanged.connect(self.moveLabel)
Beispiel #13
0
    def __init__(self, parent: QtWidgets.QGraphicsItem = None):
        super().__init__(parent)
        self.setMinimumSize(640, 320)

        self._xaxis = QtCharts.QValueAxis()
        self._xaxis.setVisible(False)

        self.xaxis = NiceValueAxis()
        self.xaxis.setTitleText("Size (nm)")
        self.xaxis.setGridLineVisible(False)

        self.yaxis = QtCharts.QValueAxis()
        self.yaxis.setGridLineVisible(False)
        self.yaxis.setTitleText("Count")
        self.yaxis.setLabelFormat("%d")

        self.addAxis(self._xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.series = QtCharts.QBarSeries()
        self.series.setBarWidth(0.9)
        self.addSeries(self.series)
        self.series.attachAxis(self._xaxis)
        self.series.attachAxis(self.yaxis)

        self.set = QtCharts.QBarSet("sizes")
        self.set.setColor(QtCore.Qt.black)
        self.set.hovered.connect(self.barHovered)
        self.series.append(self.set)

        self.fit = QtCharts.QSplineSeries()
        self.fit.setPen(QtGui.QPen(QtGui.QColor(255, 172, 0), 2.0))
        self.addSeries(self.fit)
        self.fit.attachAxis(self.xaxis)
        self.fit.attachAxis(self.yaxis)

        self.label_fit = QtWidgets.QGraphicsTextItem(self)
        self.label_fit.setFont(QtGui.QFont("sans", 12, italic=False))
        self.label_fit.setZValue(99)
        self.label_fit.setDefaultTextColor(QtGui.QColor(255, 172, 0))
        self.xaxis.rangeChanged.connect(self.updateFitLabelPos)

        self.label_hovered = QtWidgets.QGraphicsTextItem(self)
        self.plotAreaChanged.connect(self.updateHoveredLabelPos)

        self.vlines: List[QtCharts.QLineSeries] = []

        # Clean legend
        self.legend().setMarkerShape(QtCharts.QLegend.MarkerShapeFromSeries)
        self.legend().markers(self.series)[0].setVisible(False)
Beispiel #14
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.legend().setAlignment(QtCore.Qt.AlignLeft)
        self.legend().setContentsMargins(0.0, 0.0, 100.0, 0.0)
        self.legend().setMarkerShape(QtCharts.QLegend.MarkerShapeCircle)

        self.axisX = QtCharts.QValueAxis()
        self.axisY = QtCharts.QValueAxis()

        self.axisX.setVisible(False)

        self.x = 0
        self.y = 0

        self.timer = QtCore.QTimer()
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.onTimeout)

        self.percent = cpu_percent(percpu=True)

        for i in range(cpu_count()):
            core_series = QtCharts.QSplineSeries()
            core_series.setName(f"CPU {i + 1}: {self.percent[i]: .1f} %")

            colour = [
                random.randrange(0, 255),
                random.randrange(0, 255),
                random.randrange(0, 255)
            ]

            pen = QtGui.QPen(QtGui.QColor(colour[0], colour[1], colour[2]))
            pen.setWidth(1)

            core_series.setPen(pen)
            core_series.append(self.x, self.y)

            self.addSeries(core_series)

        self.addAxis(self.axisX, QtCore.Qt.AlignBottom)
        self.addAxis(self.axisY, QtCore.Qt.AlignLeft)

        for i in self.series():
            i.attachAxis(self.axisX)
            i.attachAxis(self.axisY)

        self.axisX.setRange(0, 100)
        self.axisY.setTickCount(5)
        self.axisY.setRange(0, 100)

        self.timer.start()
Beispiel #15
0
    def add_series(self, name, columns):
        self.series = QtCharts.QLineSeries()
        self.series.setName(name)

        for i in range(self.model.rowCount()):
            t = self.model.index(i, 0).data()
            date_fmt = "yyyy-MM-dd HH:mm:ss.zzz"

            x = QDateTime().fromString(t, date_fmt).toSecsSinceEpoch()
            y = float(self.model.index(i, 1).data())

            if x > 0 and y > 0:
                self.series.append(x, y)

        self.chart.addSeries(self.series)

        self.axis_x = QtCharts.QDateTimeAxis()
        self.axis_x.setTickCount(10)
        self.axis_x.setFormat("dd.MM (h:mm)")
        self.axis_x.setTitleText("Date")
        self.chart.addAxis(self.axis_x, Qt.AlignBottom)
        self.series.attachAxis(self.axis_x)

        self.axis_y = QtCharts.QValueAxis()
        self.axis_y.setTickCount(10)
        self.axis_y.setLabelFormat("%.2f")
        self.axis_y.setTitleText("Magnitude")
        self.chart.addAxis(self.axis_y, Qt.AlignLeft)
        self.series.attachAxis(self.axis_y)

        self.model.color = "{}".format(self.series.pen().color().name())
        print(self.model.color)
Beispiel #16
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.series = QtCharts.QLineSeries()
        self.series.setName("Karma points")

        self.task_list = None
        self.max_bound: datetime = datetime.datetime.now()
        self.interval = 7
        self.karma_point = 0

        self.chart = QtCharts.QChart()
        self.chart.legend().setVisible(True)
        self.chart.legend().setAlignment(Qt.AlignBottom)
        self.chart.addSeries(self.series)
        self.chart.setTitle("Karma Points")
        self.chart.setAnimationOptions(QtCharts.QChart.SeriesAnimations)

        self.axisX = QtCharts.QDateTimeAxis()
        self.axisX.setFormat("dd MMM")
        self.axisX.setTickCount(self.interval)
        self.axisY = QtCharts.QValueAxis()

        self.chart.setAxisX(self.axisX, self.series)
        self.chart.setAxisY(self.axisY, self.series)

        self.chartView = QtCharts.QChartView(self.chart)
        self.chartView.setRenderHint(QPainter.Antialiasing)

        self.main_layout = QVBoxLayout(self)
        self.main_layout.addWidget(self.chartView)
        self.setLayout(self.main_layout)
        self.setFixedSize(651, 421)
    def _set_returns_chart(self,
                           asset_universe: List[str],
                           implied_returns: pd.Series) -> None:

        implied_returns = implied_returns.reindex(asset_universe)
        bar_series = QtCharts.QBarSeries()
        bar_set = QtCharts.QBarSet("Returns")
        bar_set.append(implied_returns.mul(100).values.tolist())
        bar_series.append(bar_set)

        # configure basic chart
        chart = QtCharts.QChart()
        chart.setTitle("Market Implied Expected Returns")
        title_font = QtGui.QFont()
        title_font.setBold(True)
        chart.setFont(title_font)
        chart.addSeries(bar_series)

        # configure the x axis
        axis_x = QtCharts.QBarCategoryAxis()
        axis_x.append([s.replace(" ", "<br>") for s in asset_universe])
        chart.createDefaultAxes()
        chart.setAxisX(axis_x)

        # configure the y axis
        y_min = implied_returns.min() * 100
        y_max = implied_returns.max() * 100
        axis_y = QtCharts.QValueAxis()
        self._set_y_axis_limits(y_max, y_min, axis_y, 2)
        axis_y.setLabelFormat("%.0f")
        axis_y.setTitleText("Expected Return (%pa)")
        chart.setAxisY(axis_y)
        bar_series.attachAxis(axis_y)

        self._returns_chart_view.setChart(chart)
Beispiel #18
0
def copyAxis(chart: QtCharts.QChart,
             axis: QtCharts.QAbstractAxis) -> QtCharts.QAbstractAxis:
    a_copy: QtCharts.QAbstractAxis
    if axis.type() == QtCharts.QAbstractAxis.AxisTypeBarCategory:
        a_copy = QtCharts.QBarCategoryAxis(chart)
        labels = axis.categories()
        a_copy.append(labels)
    elif axis.type() == QtCharts.QAbstractAxis.AxisTypeCategory:
        a_copy = QtCharts.QCategoryAxis(chart)
        labels = axis.categoriesLabels()
        a_copy.setStartValue(axis.startValue(labels[0]))
        a_copy.setLabelsPosition(axis.labelsPosition())
        for lab in labels:
            a_copy.append(lab, axis.endValue(lab))
    elif axis.type() == QtCharts.QAbstractAxis.AxisTypeValue:
        a_copy = QtCharts.QValueAxis(chart)
        a_copy.setMin(axis.min())
        a_copy.setMax(axis.max())
        a_copy.setTickCount(axis.tickCount())
        a_copy.setMinorTickCount(axis.minorTickCount())
        a_copy.setTickInterval(axis.tickInterval())
    elif axis.type() == QtCharts.QAbstractAxis.AxisTypeDateTime:
        a_copy = QtCharts.QDateTimeAxis(chart)
        a_copy.setMin(axis.min())
        a_copy.setMax(axis.max())
        a_copy.setFormat(axis.format())
        a_copy.setTickCount(axis.tickCount())
    else:
        raise NotImplementedError('Cannot copy axis of type {}'.format(
            str(axis.type())))
    a_copy.setTitleText(axis.titleText())
    a_copy.setTitleFont(axis.titleFont())
    return a_copy
Beispiel #19
0
    def setYRange(self, maxY, axisY: QtCharts.QValueAxis(), minY=None):
        if maxY <= 60:
            divider = 10
        elif maxY <= 200:
            divider = 50
        elif maxY <= 600:
            divider = 100
        elif maxY <= 2000:
            divider = 500
        elif maxY <= 6000:
            divider = 1000
        elif maxY <= 20000:
            divider = 5000

        axisY.applyNiceNumbers()

        rangeLim = math.ceil(maxY / divider) * divider
        if minY is None:
            axisY.setRange(0, rangeLim)
        else:
            rangeMin = math.floor(minY / divider) * divider
            axisY.setRange(rangeMin, rangeLim)

        if minY is None:
            numTicks = math.ceil(maxY / divider) + 1
        else:
            numTicks = math.ceil(maxY / divider) + 1 - math.floor(
                minY / divider)
        axisY.setTickCount(numTicks)
Beispiel #20
0
    def __createChartWithValues(self, dataframe: pd.DataFrame,
                                attributes: Set[int], timeIndex: int,
                                timeIndexType: Type) -> QtCharts.QChart:
        chart = QtCharts.QChart()
        # Sort by time
        timeIndexName: str = dataframe.columns[timeIndex]
        filteredDf = dataframe.iloc[:, [timeIndex, *attributes]].sort_values(
            by=timeIndexName, axis=0, ascending=True)
        # filteredDf has timeIndex at position 0, attributes following
        # Drop nan labels
        filteredDf.dropna(axis=0, inplace=True, subset=[timeIndexName])

        # Create X axis
        timeSeries: pd.Series = filteredDf.iloc[:, 0]
        xAxis = self.__createTimeAxis(timeSeries, timeIndexType)
        chart.addAxis(xAxis, Qt.AlignBottom)

        # Create the Y axis
        yAxis = QtCharts.QValueAxis(chart)
        yAxis.setTitleText('Values')
        chart.addAxis(yAxis, Qt.AlignLeft)

        series: List[QtCharts.QLineSeries]
        series, yMin, yMax = self.__createSeriesForAttributes(
            filteredDf, timeIndex=0, timeIndexType=timeIndexType)
        # Set range to show every point in chart
        yAxis.setRange(yMin, yMax)
        for s in series:
            chart.addSeries(s)
            s.attachAxis(xAxis)
            s.attachAxis(yAxis)
        return chart
Beispiel #21
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        bar_set = QtCharts.QBarSet("ME")
        bar_set.setColor(QColor(231, 119, 32))
        self.task_list = None
        self.setFont("Roboto Light")

        self.max_bound: datetime = datetime.datetime.now()

        self.setFixedSize(651, 421)
        self.interval = 7

        self.series = QtCharts.QBarSeries()
        self.chart = QtCharts.QChart()
        self.chart.addSeries(self.series)
        self.chart.setFont("Roboto Light")
        self.chart.setTitle("Task Done")
        self.chart.setAnimationOptions(QtCharts.QChart.SeriesAnimations)

        self.axisX = QtCharts.QBarCategoryAxis()
        self.axisY = QtCharts.QValueAxis()

        self.chart.setAxisY(self.axisY, self.series)
        self.chart.setAxisX(self.axisX, self.series)
        self.chart.legend().setVisible(True)
        self.chart.legend().setAlignment(Qt.AlignBottom)

        self.chartView = QtCharts.QChartView(self.chart)
        self.chartView.setRenderHint(QPainter.Antialiasing)

        self.main_layout = QVBoxLayout(self)
        self.main_layout.addWidget(self.chartView)
        self.setLayout(self.main_layout)
Beispiel #22
0
    def __init__(self, frame):
        self.series = QtCharts.QLineSeries()
        self.series.setColor(Qt.red)

        self.axis_x = QtCharts.QDateTimeAxis()
        # Number of items to display
        self.axis_x.setTickCount(int(common.SETTINGS["DataCacheSize"]))
        self.axis_x.setFormat("hh:mm:ss:z")  # Date format
        self.axis_x.setTitleText("Time")

        self.axis_y = QtCharts.QValueAxis()
        self.axis_y.setTitleText("Value")

        self.chart = QtCharts.QChart()
        self.chart.setTitle("")
        self.chart.addSeries(self.series)
        self.chart.addAxis(self.axis_x, QtCore.Qt.AlignBottom)
        self.chart.addAxis(self.axis_y, QtCore.Qt.AlignLeft)

        self.series.attachAxis(self.axis_x)
        self.series.attachAxis(self.axis_y)

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

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.chart_view)

        self.frame = frame
        self.frame.setLayout(self.layout)
Beispiel #23
0
    def __createChartWithIndexes(self,
                                 dataframe: pd.DataFrame,
                                 attributes: Set[int],
                                 indexes: List[Any],
                                 timeIndex: int,
                                 timeIndexType: Type,
                                 indexMean: bool = False) -> QtCharts.QChart:
        """ Creates a chart with a series for every 'index' in 'dataframe' showing only column
        specified in 'attributes'

        :param attributes: the position of the columns to consider to create series
        :param indexes: the indexes of the dataframe to use
        :param timeIndex: the index of the column in 'dataframe' which should be considered the time axis
        :param timeIndexType: the type of column specified in 'timeIndex'. Can be Ordinal or Datetime
        :param indexMean: ignored for now

        """
        columns = dataframe.columns
        timeIndexName: str = columns[timeIndex]
        # Get the subset of attribute columns and selected indexes
        filteredDf = dataframe.loc[indexes, columns[[timeIndex, *attributes]]] \
            .dropna(axis=0, subset=[timeIndexName])
        filteredDf = filteredDf.sort_values(by=timeIndexName,
                                            axis=0,
                                            ascending=True)

        # Group rows by their index attribute. Every index has a distinct list of values
        dfByIndex = filteredDf.groupby(filteredDf.index)
        timeAxisColumn: pd.Series = list(dfByIndex)[0][1][timeIndexName]

        chart = QtCharts.QChart()
        # There will be 1 time axis for all the series, so it is created based on the first series
        # This function is passed the original time label (either Ordinal or Datetime)
        xAxis = self.__createTimeAxis(timeAxisColumn, timeIndexType)
        chart.addAxis(xAxis, Qt.AlignBottom)

        # Create the Y axis
        yAxis = QtCharts.QValueAxis()
        yAxis.setTitleText('Values')
        # Add axis Y to chart
        chart.addAxis(yAxis, Qt.AlignLeft)

        # Add every index series
        groupedValues: pd.DataFrame  # timeValue, timeAttribute, *seriesValue
        for group, groupedValues in dfByIndex:
            # Create a series for this 'index'
            groupName: str = str(group)
            allSeries: List[QtCharts.QLineSeries]
            allSeries, yMin, yMax = self.__createSeriesForAttributes(
                groupedValues, 0, timeIndexType=timeIndexType)
            yAxis.setRange(yMin, yMax)
            for series in allSeries:
                chart.addSeries(series)
                series.attachAxis(xAxis)
                series.attachAxis(yAxis)
            if len(allSeries) == 1:
                # Only 1 attribute was selected, so assume we have multiple indexes (groups)
                allSeries[0].setName(groupName)
        return chart
Beispiel #24
0
    def plotSavingsBars(self):
        chart = QtCharts.QChart()

        # barSets = []
        maxVal = 0
        minVal = 0
        barSeries = QtCharts.QBarSeries()
        expSet = QtCharts.QBarSet('Ausgaben')
        expSet.append(self.sumData['exp'])
        maxVal = max(maxVal, max(self.sumData['exp']))
        minVal = min(minVal, min(self.sumData['exp']))
        barSeries.append(expSet)

        incSet = QtCharts.QBarSet('Einnahmen')
        incSet.append(self.sumData['inc'])
        maxVal = max(maxVal, max(self.sumData['inc']))
        minVal = min(minVal, min(self.sumData['inc']))
        barSeries.append(incSet)

        savSet = QtCharts.QBarSet('Rücklagen')
        savSet.append(self.sumData['sav'])
        maxVal = max(maxVal, max(self.sumData['sav']))
        minVal = min(minVal, min(self.sumData['sav']))
        barSeries.append(savSet)

        # self.barSets = barSets

        chart.addSeries(barSeries)
        titleFont = QFont("Sans Serif")
        titleFont.setPointSize(16)
        titleFont.setBold(True)

        chart.setTitleFont(titleFont)
        chart.setTitle("Rücklagen")

        axisX = QtCharts.QBarCategoryAxis()
        axisX.append(self.plotDataTags)
        chart.setAxisX(axisX, barSeries)
        # axisX.setRange(self.plotDataTags[0], self.plotDataTags[-1])

        axisY = QtCharts.QValueAxis()
        axisY.setLabelFormat("%i")
        axisY.setTitleText("€")
        if minVal < 0:
            self.setYRange(maxVal, axisY, minVal)
        else:
            self.setYRange(maxVal, axisY)
        # chart.setAxisY(axisY, lineSeries)
        chart.setAxisY(axisY, barSeries)
        # axisY.setRange(0, 20)

        chart.legend().setVisible(True)
        chart.legend().setAlignment(Qt.AlignRight)

        self.setChart(chart)
        self.setRenderHint(QPainter.Antialiasing)
        # draw the plot from scratch (if that makes a difference)
        print('Savings bar plot drawn')
Beispiel #25
0
    def plotMeterLvl(self, legendSelection):
        chart = QtCharts.QChart()

        lineSeries = QtCharts.QLineSeries()

        for entry in self.plotData['Zählerstände'][legendSelection]:
            lineSeries.append(entry['date'].toMSecsSinceEpoch(),
                              entry['level'])

        chart.addSeries(lineSeries)
        titleFont = QFont("Sans Serif")
        titleFont.setPointSize(16)
        titleFont.setBold(True)

        chart.setTitleFont(titleFont)
        chart.setTitle("Zählerstände: " + legendSelection)

        axisX = QtCharts.QDateTimeAxis()

        tickCount = min(
            [12, len(self.plotData['Zählerstände'][legendSelection])])
        axisX.setTickCount(tickCount)
        axisX.setFormat("MM/yy")
        # axisX.setFormat("MMM yyyy")
        axisX.setTitleText("Ablesedatum")

        chart.setAxisX(axisX, lineSeries)
        # chart.addAxis(axisX, Qt.AlignBottom)
        # lineSeries.attachAxis(axisX)
        # axisX.setRange(self.plotDataTags[0], self.plotDataTags[-1])

        axisY = QtCharts.QValueAxis()
        axisY.setLabelFormat("%i")
        if legendSelection == 'Strom':
            axisY.setTitleText("Stromzählerstand [kWh]")
        elif legendSelection == 'Gas':
            axisY.setTitleText("Gaszählerstand [m<sup>3</sup>]")
        elif legendSelection == 'Wasser':
            axisY.setTitleText("Wasserzählerstand [m<sup>3</sup>]")
        # if minVal < 0:
        #     self.setYRange(maxVal, axisY, minVal)
        # else:
        #     self.setYRange(maxVal, axisY)

        chart.setAxisY(axisY, lineSeries)
        # chart.addAxis(axisY, Qt.AlignLeft)
        # lineSeries.attachAxis(axisY)
        # axisY.setRange(0, 20)

        chart.legend().setVisible(False)
        # chart.legend().setAlignment(Qt.AlignRight)

        self.setChart(chart)
        self.setRenderHint(QPainter.Antialiasing)
        # draw the plot from scratch (if that makes a difference)
        print('Meter bar plot drawn')
Beispiel #26
0
    def __init__(self, title: str = None, parent: QtWidgets.QWidget = None):
        super().__init__(QtCharts.QChart(), theme=light_theme, parent=parent)
        self.setRubberBand(QtCharts.QChartView.RectangleRubberBand)
        self.setMinimumSize(QtCore.QSize(640, 480))
        self.setRenderHint(QtGui.QPainter.Antialiasing)

        if title is not None:
            self.chart().setTitle(title)

        self.chart().legend().hide()

        self.xaxis = QtCharts.QValueAxis()
        self.xaxis.setRange(0.0, 1.0)
        self.yaxis = QtCharts.QValueAxis()
        self.yaxis.setRange(0.0, 1.0)
        self.addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.scatter = QtCharts.QScatterSeries()
        self.scatter.setColor(sequential[1])
        self.scatter.setMarkerSize(5)
        self.scatter.setUseOpenGL(True)
        self.chart().addSeries(self.scatter)
        self.scatter.attachAxis(self.xaxis)
        self.scatter.attachAxis(self.yaxis)

        self.line = QtCharts.QLineSeries()
        self.line.setPen(QtGui.QPen(QtCore.Qt.black, 1.5))
        self.chart().addSeries(self.line)
        self.line.attachAxis(self.xaxis)
        self.line.attachAxis(self.yaxis)

        self.t1 = QtCharts.QLineSeries()
        self.t1.setPen(QtGui.QPen(QtCore.Qt.black, 1.0, QtCore.Qt.DashLine))
        self.chart().addSeries(self.t1)
        self.t1.attachAxis(self.xaxis)
        self.t1.attachAxis(self.yaxis)

        self.t2 = QtCharts.QLineSeries()
        self.t2.setPen(QtGui.QPen(QtCore.Qt.black, 1.0, QtCore.Qt.DashLine))
        self.chart().addSeries(self.t2)
        self.t2.attachAxis(self.xaxis)
        self.t2.attachAxis(self.yaxis)
Beispiel #27
0
    def __init__(self):
        QMainWindow.__init__(self)

        self.set0 = QtCharts.QBarSet("Jane")
        self.set1 = QtCharts.QBarSet("John")
        self.set2 = QtCharts.QBarSet("Axel")
        self.set3 = QtCharts.QBarSet("Mary")
        self.set4 = QtCharts.QBarSet("Sam")

        self.set0.append([1, 2, 3, 4, 5, 6])
        self.set1.append([5, 0, 0, 4, 0, 7])
        self.set2.append([3, 5, 8, 13, 8, 5])
        self.set3.append([5, 6, 7, 3, 4, 5])
        self.set4.append([9, 7, 5, 3, 1, 2])

        self.barSeries = QtCharts.QBarSeries()
        self.barSeries.append(self.set0)
        self.barSeries.append(self.set1)
        self.barSeries.append(self.set2)
        self.barSeries.append(self.set3)
        self.barSeries.append(self.set4)

        self.lineSeries = QtCharts.QLineSeries()
        self.lineSeries.setName("trend")
        self.lineSeries.append(QPoint(0, 4))
        self.lineSeries.append(QPoint(1, 15))
        self.lineSeries.append(QPoint(2, 20))
        self.lineSeries.append(QPoint(3, 4))
        self.lineSeries.append(QPoint(4, 12))
        self.lineSeries.append(QPoint(5, 17))

        self.chart = QtCharts.QChart()
        self.chart.addSeries(self.barSeries)
        self.chart.addSeries(self.lineSeries)
        self.chart.setTitle("Line and barchart example")

        self.categories = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
        self.axisX = QtCharts.QBarCategoryAxis()
        self.axisX.append(self.categories)
        self.chart.setAxisX(self.axisX, self.lineSeries)
        self.chart.setAxisX(self.axisX, self.barSeries)
        self.axisX.setRange("Jan", "Jun")

        self.axisY = QtCharts.QValueAxis()
        self.chart.setAxisY(self.axisY, self.lineSeries)
        self.chart.setAxisY(self.axisY, self.barSeries)
        self.axisY.setRange(0, 20)

        self.chart.legend().setVisible(True)
        self.chart.legend().setAlignment(Qt.AlignBottom)

        self.chartView = QtCharts.QChartView(self.chart)
        self.chartView.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(self.chartView)
Beispiel #28
0
    def __init__(self, data: ColorTransferFunction = None):
        super().__init__(data)

        self.chart = ColorTransferFunctionChart(data)
        # self.chart.legend().hide()
        self.chart_rect_f = QRectF()

        self.axis_x = QtCharts.QValueAxis()
        # self.axis_x.setLabelFormat('%d')
        self.axis_x.setLabelFormat('%.1f')
        self.axis_x.setTitleText('Intensity')
        self.chart.addAxis(self.axis_x, Qt.AlignBottom)

        self.axis_y = QtCharts.QValueAxis()
        # self.axis_y.setTickCount(10)
        self.axis_y.setLabelFormat('%.2f')
        # self.axis_y.setTitleText('Magnitude')
        self.chart.addAxis(self.axis_y, Qt.AlignLeft)

        self.axis_x.setRange(0, self.data.points[-1].x)
        self.axis_y.setRange(0, 1)
        # Add an empty series, else |chart.mapToPosition| will no work
        self.series = self.add_series()

        self.chart_view = QtCharts.QChartView(self.chart)
        # self.chart_view.setRubberBand(QtCharts.QChartView.RectangleRubberBand)
        self.chart_view.setRenderHint(QPainter.Antialiasing)

        self.scene = self.chart_view.scene()

        self._interval_views = SortedList()
        self._point_views = []
        if self.data is not None:
            self._add_interval_views()
            self._add_point_views()

        self.data.point_added.connect(self._on_point_added)

        grid_layout = QGridLayout()
        grid_layout.setContentsMargins(0, 0, 0, 0)
        grid_layout.addWidget(self.chart_view)
        self.setLayout(grid_layout)
Beispiel #29
0
    def add_barSeries(self):

        self.barChart_vmaf.addSeries(self.vmaf_barSeries)
        self.barChart_psnr.addSeries(self.psnr_barSeries)
        self.barChart_bitrate.addSeries(self.bitrate_barSeries)

        self.axisX = QtCharts.QValueAxis()
        self.axisY = QtCharts.QValueAxis()

        self.barChart_vmaf.addAxis(self.axisX, QtCore.Qt.AlignBottom)
        self.barChart_vmaf.addAxis(self.axisY, QtCore.Qt.AlignLeft)
        self.barChart_vmaf.createDefaultAxes()

        self.barChart_psnr.addAxis(self.axisX, QtCore.Qt.AlignBottom)
        self.barChart_psnr.addAxis(self.axisY, QtCore.Qt.AlignLeft)
        self.barChart_psnr.createDefaultAxes()

        self.barChart_bitrate.addAxis(self.axisX, QtCore.Qt.AlignBottom)
        self.barChart_bitrate.addAxis(self.axisY, QtCore.Qt.AlignLeft)
        self.barChart_bitrate.createDefaultAxes()
Beispiel #30
0
    def __init__(self):
        super(LineGraphicsPlot, self).__init__()
        self.DataSeries = QtCharts.QSplineSeries()
        self.Area = QtCharts.QAreaSeries(self.DataSeries)
        self.Area.setBrush(QBrush(QColor(200,100,224,40)))



        #self.addSeries(self.DataSeries)
        self.addSeries(self.Area)

        self.AxisX = QtCharts.QValueAxis()
        self.AxisY = QtCharts.QValueAxis()
        self.addAxis(self.AxisX,QtCore.Qt.AlignBottom)
        self.addAxis(self.AxisY,QtCore.Qt.AlignLeft)
        #self.DataSeries.attachAxis(self.AxisX)
        #self.DataSeries.attachAxis(self.AxisY)

        self.Area.attachAxis(self.AxisX)
        self.Area.attachAxis(self.AxisY)

        self.AxisX.setTickCount(5)

        self.mx = 0
        self.my = 0
        self.AxisX.setRange(self.mx,self.mx + 5)
        self.AxisY.setRange(-1.2,1.2)
        self.legend().hide()
        self.axisX().hide()

        self.setTheme(QtCharts.QChart.ChartThemeDark)

        #self.setTheme(QtCharts.QChart.ChartThemeBrownSand)
        #self.setTheme(QtCharts.QChart.ChartThemeHighContrast)
        self.setPlotAreaBackgroundBrush(QBrush(QColor(200,100,14)))



        self.m_timer = QtCore.QTimer(self)
        self.m_timer.timeout.connect(self.handleTimeout)
        self.m_timer.start(25)