Ejemplo n.º 1
0
    def __init__(self):
        QMainWindow.__init__(self)

        self.series = QtCharts.QPieSeries()

        self.series.append('Jane', 1)
        self.series.append('Joe', 2)
        self.series.append('Andy', 3)
        self.series.append('Barbara', 4)
        self.series.append('Axel', 5)

        self.slice = self.series.slices()[1]
        self.slice.setExploded()
        self.slice.setLabelVisible()
        self.slice.setPen(QPen(Qt.darkGreen, 2))
        self.slice.setBrush(Qt.green)

        self.chart = QtCharts.QChart()
        self.chart.addSeries(self.series)
        self.chart.setTitle('Simple piechart example')
        self.chart.legend().hide()

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

        self.setCentralWidget(self.chartView)
Ejemplo n.º 2
0
    def updatePieChart(self):

        #Remove data from pie chart.
        self.chart.removeSeries(self.series)

        #Creates new pie chart data -> series.
        self.series = QtCharts.QPieSeries()
        self.series.append("Benign", self.benignFlows)
        item = self.series.append("DoS", self.DoS)
        item.setBrush(QtGui.QColor("salmon"))
        item = self.series.append("DDoS", self.DDoS)
        item.setBrush(QtGui.QColor("blue"))
        item = self.series.append("SSH", self.SSH)
        item.setBrush(QtGui.QColor(0, 255, 255))
        item = self.series.append("FTP", self.FTP)
        item.setBrush(QtGui.QColor(255, 0, 255))

        #Adds slice.
        slice = QtCharts.QPieSlice()
        slice = self.series.slices()[0]
        slice.setExploded(True)
        slice.setLabelVisible(True)
        slice.setPen(QtGui.QPen(QtCore.Qt.darkGreen, 2))
        slice.setBrush(QtCore.Qt.green)

        #Adds data to pie chart.
        self.chart.addSeries(self.series)
Ejemplo n.º 3
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)
Ejemplo n.º 4
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)
Ejemplo n.º 5
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
Ejemplo n.º 6
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
Ejemplo n.º 7
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)
Ejemplo n.º 8
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)
Ejemplo n.º 9
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
Ejemplo n.º 10
0
    def __init__(self, parent=None):
        super().__init__()

        self.toolbar = QToolBar()
        self.view = qtc.QChartView()
        #self.view.setRenderHint(QPainter.Antialiasing)
        self.chart = qtc.QChart()
        self.reader = FsaReader()

        # build toolbar
        self.dye_menu = QMenu()
        self.dye_btn = QPushButton("Dye")
        self.dye_btn.setIcon(FIcon(0xf755))
        self.dye_btn.setFlat(True)
        self.dye_btn.setMenu(self.dye_menu)
        self.toolbar.addWidget(self.dye_btn)

        self.toolbar.addAction(FIcon(0xf293), "rescale", self.chart.zoomReset)
        self.toolbar.addAction(FIcon(0xf6ec), "Zoom in", self.chart.zoomIn)
        self.toolbar.addAction(FIcon(0xf6eb), "Zoom out", self.chart.zoomOut)
        self.toolbar.addAction(FIcon(0xf01a), "configure",
                               self._on_adjust_clicked)

        main_layout = QVBoxLayout()
        main_layout.addWidget(self.toolbar)
        main_layout.addWidget(self.view)
        self.setLayout(main_layout)

        # configure view
        self.view.setRubberBand(qtc.QChartView.RectangleRubberBand)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    def generateUnitCharts(self):

        self.alliedAircraft = [d.allied_units.aircraft_count for d in self.game.game_stats.data_per_turn]
        self.enemyAircraft = [d.enemy_units.aircraft_count for d in self.game.game_stats.data_per_turn]

        self.alliedAircraftSerie = QtCharts.QLineSeries()
        self.alliedAircraftSerie.setName("Allied aircraft count")
        for a, i in enumerate(self.alliedAircraft):
            self.alliedAircraftSerie.append(QPoint(a, i))

        self.enemyAircraftSerie = QtCharts.QLineSeries()
        self.enemyAircraftSerie.setColor(Qt.red)
        self.enemyAircraftSerie.setName("Enemy aircraft count")
        for a, i in enumerate(self.enemyAircraft):
            self.enemyAircraftSerie.append(QPoint(a, i))

        self.chart = QtCharts.QChart()
        self.chart.addSeries(self.alliedAircraftSerie)
        self.chart.addSeries(self.enemyAircraftSerie)
        self.chart.setTitle("Aircraft forces over time")

        self.chart.createDefaultAxes()
        self.chart.axisX().setRange(0, len(self.alliedAircraft))
        self.chart.axisY().setRange(0, max(max(self.alliedAircraft), max(self.enemyAircraft)) + 10)

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

        self.layout.addWidget(self.chartView, 0, 0)
Ejemplo n.º 13
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)
Ejemplo n.º 14
0
def get_performace_chart():
    # Graph is based on data of:
    #    'Total consumption of energy increased by 10 per cent in 2010'
    # Statistics Finland, 13 December 2011
    # http://www.stat.fi/til/ekul/2010/ekul_2010_2011-12-13_tie_001_en.html
    series1 = QtCharts.QPieSeries()
    series1.setName("Business Logic")
    series1.append("User Input", 353295)
    series1.append("Card Processing", 188500)
    series1.append("Others", 148680)

    series2 = QtCharts.QPieSeries()
    series2.setName("Communications")
    series2.append("Payment ", 319663)
    series2.append("Reversal", 45875)
    series2.append("Advice", 1060)
    series2.append("DCC", 111060)

    series3 = QtCharts.QPieSeries()
    series3.setName("Printing")
    series3.append("Merchant Receipt", 238789)
    series3.append("Customer Receipt", 37802)

    donut_breakdown = DonutBreakdownChart()
    donut_breakdown.setAnimationOptions(QtCharts.QChart.AllAnimations)
    donut_breakdown.setTitle("Total Transaction time")
    donut_breakdown.legend().setAlignment(Qt.AlignRight)
    donut_breakdown.add_breakdown_series(series1, Qt.red)
    donut_breakdown.add_breakdown_series(series2, Qt.darkGreen)
    donut_breakdown.add_breakdown_series(series3, Qt.darkBlue)

    chart_view = QtCharts.QChartView(donut_breakdown)
    chart_view.setRenderHint(QPainter.Antialiasing)
    return chart_view
Ejemplo n.º 15
0
    def __init__(self, data):
        QWidget.__init__(self)

        self.model = CustomTableModel(data)

        self.table_view = QTableView()
        self.table_view.setModel(self.model)
        self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.table_view.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.table_view.setMinimumSize(400, 600)

        self.chart = QtCharts.QChart()
        self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations)

        self.init_data()

        self.chart.createDefaultAxes()
        self.chart_view = QtCharts.QChartView(self.chart)
        self.chart_view.setRenderHint(QPainter.Antialiasing)
        self.chart_view.setMinimumSize(800, 600)

        # create main layout
        self.main_layout = QGridLayout()
        self.main_layout.addWidget(self.table_view, 1, 0)
        self.main_layout.addWidget(self.chart_view, 1, 1)
        self.main_layout.setColumnStretch(1, 2)
        self.main_layout.setColumnStretch(0, 1)
        self.setLayout(self.main_layout)
Ejemplo n.º 16
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)
Ejemplo n.º 17
0
    def __init__(self, nseries=1, series_names=None):
        super().__init__()
        if nseries < 1:
            raise ValueError(
                'The number of serieses must be larger than zero.')
        self.nseries = nseries
        self.series_names = series_names
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)
        self.setMinimumHeight(110)
        self.setMinimumWidth(400)

        self.serieses = [QtCharts.QLineSeries() for _ in range(self.nseries)]
        self.chart = QtCharts.QChart()
        if self.series_names is None:
            self.chart.legend().hide()
        for idx, series in enumerate(self.serieses):
            self.chart.addSeries(series)
            if self.series_names is not None:
                series.setName(self.series_names[idx])
        self.chart.createDefaultAxes()
        self.chart.layout().setContentsMargins(0, 0, 0, 0)
        # self.chart.setTheme(QChart.ChartThemeDark)
        self.chart.axisY().setTickCount(3)
        chart_view = QtCharts.QChartView(self.chart)
        chart_view.setRenderHint(QPainter.Antialiasing)
        layout.addWidget(chart_view)

        self.x_max = 2
        self.y_pts = list()
Ejemplo n.º 18
0
    def initUI(self):
        layout = QVBoxLayout()

        # Initialize chart
        chart = QtCharts.QChart()
        lineSeries = QtCharts.QLineSeries()

        # Make some random data points
        dataSeries = [(i + 1, randint(0, 99999)) for i in range(200)]

        # load data into chart:
        for point in dataSeries:
            lineSeries.append(point[0], point[1])

        # Add Some Chart Options
        chart.addSeries(lineSeries)
        chart.setTitle("Random Numbers from 0-9000")
        chart.createDefaultAxes()

        # Create a container (similar to a widget)
        chartView = QtCharts.QChartView(chart)
        chartView.setRenderHint(QPainter.Antialiasing)

        # Some Chart Styling
        lineSeries.setColor(QtGui.QColor("darkgray"))
        chartView.chart().setBackgroundBrush(QtGui.QColor("ivory"))
        layout.addWidget(chartView)
        self.setLayout(layout)
Ejemplo n.º 19
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)
Ejemplo n.º 20
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)
Ejemplo n.º 21
0
    def create_piechart(self):

        #Creates pie chart data.
        self.series = QtCharts.QPieSeries()
        self.series.append("DoS", 0)
        self.series.append("DDoS", 0)
        self.series.append("Benign", 0)
        self.series.append("SSH", 0)
        self.series.append("FTP", 0)

        #Adds slice.
        slice = QtCharts.QPieSlice()
        slice = self.series.slices()[2]
        slice.setExploded(True)
        slice.setLabelVisible(True)
        slice.setPen(QtGui.QPen(QtCore.Qt.darkGreen, 2))
        slice.setBrush(QtCore.Qt.green)

        #Create chart.
        self.chart = QtCharts.QChart()
        self.chart.legend().hide()
        self.chart.addSeries(self.series)
        self.chart.createDefaultAxes()
        self.chart.setTitle("Attacks Pie Chart")

        #Adds legend.
        self.chart.legend().setVisible(True)
        self.chart.legend().setAlignment(QtCore.Qt.AlignBottom)
        self.chart.setBackgroundVisible(False)

        #Render pie chart.
        chartview = QtCharts.QChartView(self.chart)
        chartview.setRenderHint(QtGui.QPainter.Antialiasing)

        return chartview
Ejemplo n.º 22
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)
Ejemplo n.º 23
0
def createPieChart(data):

    chart = QtCharts.QChart()
    # chart.legend().hide()
    chart.setTitle("Pie chart (refugees as of 2017)")

    series = QtCharts.QPieSeries()

    sliceList = list(
        map(lambda nv: QtCharts.QPieSlice(nv[0], nv[1]), zip(data[0],
                                                             data[1])))

    series.append(sliceList)

    for s in series.slices():
        s.setLabelVisible()

    chart = QtCharts.QChart()
    chart.addSeries(series)
    chart.setTitle("Simple piechart example")
    # chart.legend()->hide();

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

    return chartView
Ejemplo n.º 24
0
    def createBarCharts(self, x, y1, y2):
        barSet1 = QtCharts.QBarSet("Magnitude")
        # c1 = PySide2.QtWidgets.QColorDialog.getColor()
        barSet1.setColor(Qt.white)
        barSet1.append(y1)

        barSet2 = QtCharts.QBarSet("Depths")
        barSet2.setColor(Qt.magenta)
        barSet2.append(y2)

        barSeries1 = QtCharts.QBarSeries()
        barSeries1.append(barSet1)
        barSeries1.append(barSet2)

        barChart1 = QtCharts.QChart()
        barChart1.addSeries(barSeries1)
        barChart1.setTitle("my first bar chart")
        barChart1.setAnimationOptions(QtCharts.QChart.SeriesAnimations)

        categories = x
        barCategoryAxis = QtCharts.QBarCategoryAxis()
        barCategoryAxis.append(categories)
        barChart1.createDefaultAxes()
        barChart1.setAxisX(barCategoryAxis, barSeries1)

        barChart1.legend().setVisible(True)
        barChart1.legend().setAlignment(Qt.AlignTop)

        return barChart1
Ejemplo n.º 25
0
def createScatterChart(data):

    chart = QtCharts.QChart()
    # chart.legend().hide()
    chart.setTitle("Spline chart (market shares)")

    series0 = QtCharts.QScatterSeries()
    series0.setName("height / weight")
    series0.setMarkerShape(QtCharts.QScatterSeries.MarkerShapeCircle)
    series0.setMarkerSize(5.0)

    #series0.append([0, 6, 6, 4])

    pointsList = list(
        map(lambda hw: QPointF(hw[0], hw[1]), zip(data[0], data[1])))

    series0.append(pointsList)

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

    chart.addSeries(series0)

    chart.setTitle("Nba Players active as of 2018 height/weight")

    chart.createDefaultAxes()

    chart.setDropShadowEnabled(False)

    chart.axes(Qt.Vertical)[0].setTitleText("Weight")
    chart.axes(Qt.Horizontal)[0].setTitleText("Height")

    return chartView
Ejemplo n.º 26
0
    def create_areachart(self):
        chart = QtCharts.QChart()
        chart.setTitle("Area Chart")

        # The lower series initialized to zero values
        lower_series = None
        name = "Series "
        for i in range(len(self.data_table)):
            upper_series = QtCharts.QLineSeries(chart)
            for j in range(len(self.data_table[i])):
                data = self.data_table[i][j]
                if lower_series:
                    points = lower_series.pointsVector()
                    y_value = points[i].y() + data[0].y()
                    upper_series.append(QPointF(j, y_value))
                else:
                    upper_series.append(QPointF(j, data[0].y()))
            area = QtCharts.QAreaSeries(upper_series, lower_series)
            area.setName("{}{}".format(name, i))
            chart.addSeries(area)
            lower_series = upper_series

        chart.createDefaultAxes()
        chart.axisX().setRange(0, self.value_count - 1)
        chart.axisY().setRange(0, self.value_max)
        # Add space to label to add space between labels and axis
        chart.axisY().setLabelFormat("%.1f  ")

        return chart
Ejemplo n.º 27
0
    def __init__(self, parent=None, f=None, *args, **kwargs):
        QtWidgets.QWidget.__init__(self)
        self.maxSize = 31  # 只存储最新的31个数据
        self.maxX = 300
        self.maxY = 100
        self.data = []

        #折线
        self.splineSeries = QtCharts.QSplineSeries()
        #离散点
        self.scatterSeries = QtCharts.QScatterSeries()
        self.scatterSeries.setMarkerSize(8)

        self.chart = QtCharts.QChart()
        self.chart.addSeries(self.splineSeries)
        self.chart.addSeries(self.scatterSeries)
        self.chart.legend().hide()
        self.chart.setTitle("实时动态曲线")
        self.chart.createDefaultAxes()
        self.chart.axisX().setRange(0, self.maxX)
        self.chart.axisY().setRange(0, self.maxY)

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

        layout = QtWidgets.QHBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(self.chartView)
        self.setLayout(layout)
        self.thread=None
Ejemplo n.º 28
0
    def __init__(self):
        QMainWindow.__init__(self)

        self.series = QtCharts.QLineSeries()
        self.series.append(0, 6)
        self.series.append(2, 4)
        self.series.append(3, 8)
        self.series.append(7, 4)
        self.series.append(10, 5)
        self.series.append(QPointF(11, 1))
        self.series.append(QPointF(13, 3))
        self.series.append(QPointF(17, 6))
        self.series.append(QPointF(18, 3))
        self.series.append(QPointF(20, 2))

        self.chart = QtCharts.QChart()
        self.chart.legend().hide()
        self.chart.addSeries(self.series)
        self.chart.createDefaultAxes()
        self.chart.setTitle("Simple line chart example")

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

        self.setCentralWidget(self.chartView)
Ejemplo n.º 29
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
Ejemplo n.º 30
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())