Ejemplo n.º 1
0
    def createAreaChart(self):
        chart = QChart()
        chart.setTitle("Area chart")

        # The lower series is initialized to zero values.
        lowerSeries = None
        y_points = []

        for i, data_list in enumerate(self.m_dataTable):
            upperSeries = QLineSeries(chart)
            for j, (value, _) in enumerate(data_list):
                y = value.y()

                if lowerSeries is None:
                    upperSeries.append(QPointF(j, y))
                    y_points.append(y)
                else:
                    new_y = y_points[i] + y
                    upperSeries.append(QPointF(j, new_y))
                    y_points[j] += new_y

            area = QAreaSeries(upperSeries, lowerSeries)
            area.setName("Series " + str(i))
            chart.addSeries(area)
            lowerSeries = upperSeries

        chart.createDefaultAxes()

        return chart
Ejemplo n.º 2
0
    def __init__(self):
        super().__init__()

        series = QLineSeries()

        for date, value in DATA:
            date_value = QDateTime(*date, 0, 0).toMSecsSinceEpoch()
            series.append(date_value, value)

        chart = QChart()
        chart.setTheme(QChart.ChartThemeDark)
        chart.setTitle("Line Chart with Date Example")
        chart.setAnimationOptions(QChart.SeriesAnimations)
        chart.addSeries(series)
        chart.legend().hide()

        axisX = QDateTimeAxis()
        axisX.setFormat("dd/MM/yyyy")
        axisX.setTitleText('Date')
        chart.addAxis(axisX, Qt.AlignBottom)
        series.attachAxis(axisX)

        axisY = QValueAxis()
        axisY.setTitleText('Value')
        chart.addAxis(axisY, Qt.AlignLeft)
        series.attachAxis(axisY)

        chart_view = QChartView()
        chart_view.setChart(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(chart_view)
Ejemplo n.º 3
0
    def createAreaChart(self):
        chart = QChart()
        chart.setTitle("Area chart")

        # The lower series is initialized to zero values.
        lowerSeries = None
        y_points = []

        for i, data_list in enumerate(self.m_dataTable):
            upperSeries = QLineSeries(chart)
            for j, (value, _) in enumerate(data_list):
                y = value.y()

                if lowerSeries is None:
                    upperSeries.append(QPointF(j, y))
                    y_points.append(y)
                else:
                    new_y = y_points[i] + y
                    upperSeries.append(QPointF(j, new_y))
                    y_points[j] += new_y

            area = QAreaSeries(upperSeries, lowerSeries)
            area.setName("Series " + str(i))
            chart.addSeries(area)
            lowerSeries = upperSeries

        chart.createDefaultAxes()

        return chart
    def __init__(self):
        super().__init__()
        # window size
        self.setMinimumSize(600, 400)

        # data
        raw_data = [
            (0, 6),
            (2, 4),
            (3, 8),
            (7, 4),
            (10, 5),
            (11, 1),
            (13, 3),
            (17, 6),
            (18, 3),
            (20, 2)
        ]

        series = QLineSeries()
        for d in raw_data:
            series.append(*d)

        # chart object
        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series)         # data feeding
        chart.createDefaultAxes()
        
        # displaying chart
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)
        self.setCentralWidget(chart_view)
Ejemplo n.º 5
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("Demo12_1, QChart 基本绘图")
        self.resize(580, 420)
        chart = QChart()
        chart.setTitle("简单函数曲线")
        chartView = QChartView(self)
        chartView.setChart(chart)
        self.setCentralWidget(chartView)
        series0 = QLineSeries()
        series1 = QLineSeries()
        series0.setName("sin曲线")
        series1.setName("cos曲线")
        chart.addSeries(series0)
        chart.addSeries(series1)
        t = 0
        intv = 0.1
        pointCount = 100
        for i in range(pointCount):
            y1 = math.cos(t)
            series0.append(t, y1)
            y2 = 1.5 * math.sin(t + 20)
            series1.append(t, y2)
            t = t + intv
        axisX = QValueAxis()
        axisX.setRange(0, 10)
        axisX.setTitleText("time(secs)")
        axisY = QValueAxis()
        axisY.setRange(-2, 2)
        axisY.setTitleText("value")

        chart.setAxisX(axisX, series0)
        chart.setAxisY(axisY, series0)
        chart.setAxisX(axisX, series1)
        chart.setAxisY(axisY, series1)
Ejemplo n.º 6
0
    def setupChart(self):
        """Set up the GUI's series and chart."""
        # Collect x and y data values from the CSV file
        x_values, y_values = self.loadCSVFile()

        # Get the largest x and y values; Used for setting the chart's axes
        x_max, y_max = max(x_values), max(y_values)

        # Create numpy arrays from the x and y values
        x_values = np.array(x_values)
        y_values = np.array(y_values)

        # Calculate the regression line
        coefficients = linearRegression(x_values, y_values)

        # Create chart object
        chart = QChart()
        chart.setTitle("Auto Insurance for Geographical Zones in Sweden")
        chart.legend().hide()

        # Create scatter series and add points to the series
        scatter_series = QScatterSeries()
        scatter_series.setName("DataPoints")
        scatter_series.setMarkerSize(9.0)
        scatter_series.hovered.connect(self.displayPointInfo)

        for value in range(0, self.row_count - 1):
            scatter_series.append(x_values[value], y_values[value])
            scatter_series.setBorderColor(QColor('#000000'))

        # Create line series and add points to the series
        line_series = QLineSeries()
        line_series.setName("RegressionLine")

        # Calculate the regression line
        for x in x_values:
            y_pred = coefficients[0] + coefficients[1] * x
            line_series.append(x, y_pred)

        # Add both series to the chart and create x and y axes
        chart.addSeries(scatter_series)
        chart.addSeries(line_series)
        chart.createDefaultAxes()

        axis_x = chart.axes(Qt.Horizontal)
        axis_x[0].setTitleText("Number of Claims")
        axis_x[0].setRange(0, x_max)
        axis_x[0].setLabelFormat("%i")

        axis_y = chart.axes(Qt.Vertical)
        axis_y[0].setTitleText(
            "Total Payment in Swedish Kronor (in thousands)")
        axis_y[0].setRange(0, y_max + 20)

        # Create QChartView object for displaying the chart
        chart_view = QChartView(chart)

        v_box = QVBoxLayout()
        v_box.addWidget(chart_view)
        self.setLayout(v_box)
Ejemplo n.º 7
0
	def drawD2(self):
		if self.vtkViewer.reader == None:
			return

		num = self.inputD2.text()
		try:
			num = list(map(int, num.split(' ')))
		except Exception:
			return
		if len(num) != 2 or num[0] <= 1 or num[1] <= 1:
			return

		self.clear()

		histogram, scale = self.vtkViewer.d2Sample(num[0], num[1])

		d2Chart = QChart()
		d2Chart.legend().hide()
		polyline = QPolygonF(num[0])
		pointer = polyline.data()
		dtype, tinfo = np.float, np.finfo
		pointer.setsize(2*polyline.size()*tinfo(dtype).dtype.itemsize)
		memory = np.frombuffer(pointer, dtype)
		memory[:(num[0]-1)*2+1:2] = scale
		memory[1:(num[0]-1)*2+2:2] = histogram
		curve = QLineSeries()
		curve.append(polyline)

		d2Chart.addSeries(curve)
		d2Chart.createDefaultAxes()

		ChartView = QChartView(d2Chart)
		self.d2ChartLayout.addWidget(ChartView)
 def add_new_data(self, data: dict):
     self.x += self.time.msec()
     self.time.start()
     if self.x > 10000:
         self.ax.setRange(self.x - 10000, self.x)
     for key in data:
         try:
             value = float(data[key])
         except ValueError:
             continue
         if value > self.ymax:
             self.ymax = value
             self.ay.setRange(self.ymin, self.ymax)
         elif value < self.ymin:
             self.ymin = value
             self.ay.setRange(self.ymin, self.ymax)
         if key in self.lines:
             if self.lines[key].__len__() >= 32:
                 # self.lines[key].replace(0,self.x, value)
                 self.lines[key].remove(0)
             # else:
             self.lines[key].append(self.x, value)
         else:
             # ls = QSplineSeries(self)
             ls = QLineSeries(self)
             ls.append(self.x, value)
             ls.setColor(
                 QColor(random.randint(0, 255), random.randint(0, 255),
                        random.randint(0, 255)))
             ls.setName(key)
             self.chart().addSeries(ls)
             self.chart().setAxisX(self.ax, ls)
             self.chart().setAxisY(self.ay, ls)
             self.lines[key] = ls
Ejemplo n.º 9
0
    def add_series(self, x_list, y_list, name):
        series = QLineSeries()
        series.setName(name)

        for x, y in zip(x_list, y_list):
            series.append(x, y)

        self.model.addSeries(series)
        self.model.createDefaultAxes()
Ejemplo n.º 10
0
    def initChart(self, NumSection, Alltime, PlotData, name):
        self._chart = QChart(title=name)
        self._chart.setAcceptHoverEvents(True)
        # Series动画
        self._chart.setAnimationOptions(QChart.SeriesAnimations)
        # dataTable = [
        #     ["邮件营销", [120, 132, 101, 134, 90, 230]],
        #     ["联盟广告", [220, 182, 191, 234, 290, 330, 310]],
        #     ["视频广告", [150, 232, 201, 154, 190, 330, 410]],
        #     ["直接访问", [320, 332, 301, 334, 390, 330, 320]],
        #     ["搜索引擎", [820, 932, 901, 934, 1290, 1330, 1320]]
        # ]
        for series_name, data_list, label_list in PlotData:
            series = QLineSeries(self._chart)
            for j, v in zip(label_list, data_list):
                series.append(j, v)
            series.setName(series_name)
            series.setPointsVisible(True)  # 显示圆点
            series.hovered.connect(self.handleSeriesHoverd)  # 鼠标悬停
            self._chart.addSeries(series)
        self._chart.createDefaultAxes()  # 创建默认的轴
        axisX = self._chart.axisX()  # x轴
        axisX.setTickCount(Alltime)  # x轴设置7个刻度
        axisX.setGridLineVisible(False)  # 隐藏从x轴往上的线条
        axisY = self._chart.axisY()
        axisY.setTickCount(NumSection)  # y轴设置7个刻度
        axisY.setRange(0, NumSection)  # 设置y轴范围
        # 自定义x轴
        axis_x = QCategoryAxis(
            self._chart,
            labelsPosition=QCategoryAxis.AxisLabelsPositionOnValue)
        axis_x.setTickCount(Alltime + 1)
        axis_x.setGridLineVisible(False)
        min_x = axisX.min()
        for i in range(0, Alltime + 1):
            axis_x.append(str(i), min_x + i)
        self._chart.setAxisX(axis_x, self._chart.series()[-1])

        # 自定义y轴
        axis_y = QCategoryAxis(
            self._chart, labelsPosition=QCategoryAxis.AxisLabelsPositionCenter)
        axis_y.setTickCount(NumSection)
        axis_y.setRange(0, NumSection)
        for i in range(0, NumSection + 1):
            axis_y.append('section%i' % (NumSection - i + 1), i)
        self._chart.setAxisY(axis_y, self._chart.series()[-1])
        # chart的图例
        legend = self._chart.legend()
        # 设置图例由Series来决定样式
        legend.setMarkerShape(QLegend.MarkerShapeFromSeries)
        # 遍历图例上的标记并绑定信号
        for marker in legend.markers():
            # 点击事件
            marker.clicked.connect(self.handleMarkerClicked)
            # 鼠标悬停事件
            marker.hovered.connect(self.handleMarkerHovered)
        self.setChart(self._chart)
Ejemplo n.º 11
0
    def initChart(self):
        self._chart = QChart(title="农业大棚数据监测曲线")
        self._chart.setAcceptHoverEvents(True)
        # Series动画
        self._chart.setAnimationOptions(QChart.SeriesAnimations)

        dataTable = [["大棚湿度", []], ["大棚温度", []], ["大棚二氧化碳浓度", []]]
        data = pd.read_csv("data/data.csv")
        list = data.values.tolist()
        for i in range(30):
            dataTable[0][1].append(list[i * 60][3])
            dataTable[1][1].append(list[i * 60][4])
            dataTable[2][1].append(list[i * 60][5])

        # dataTable = [
        #     ["邮件营销", [120, 132, 101, 134, 90, 230, 210]],
        #     ["直接访问", [320, 332, 301, 334, 390, 330, 320]],
        #     ["搜索引擎", [820, 932, 901, 934, 1290, 1330, 1320]]
        # ]
        for series_name, data_list in dataTable:
            series = QLineSeries(self._chart)
            for j, v in enumerate(data_list):
                series.append(j, v)
            series.setName(series_name)
            series.setPointsVisible(True)  # 显示圆点
            series.hovered.connect(self.handleSeriesHoverd)  # 鼠标悬停
            self._chart.addSeries(series)
        self._chart.createDefaultAxes()  # 创建默认的轴
        axisX = self._chart.axisX()  # x轴
        axisX.setTickCount(30)  # x轴设置30个刻度
        axisX.setGridLineVisible(False)  # 隐藏从x轴往上的线条
        axisY = self._chart.axisY()
        axisY.setTickCount(10)  # y轴设置10个刻度
        axisY.setRange(0, 100)  # 设置y轴范围
        # 自定义x轴
        axis_x = QCategoryAxis(
            self._chart,
            labelsPosition=QCategoryAxis.AxisLabelsPositionOnValue)
        axis_x.setTickCount(30)
        axis_x.setGridLineVisible(False)
        min_x = axisX.min()
        max_x = axisX.max()
        step = (max_x - min_x) / (30 - 1)  # 7个tick
        for i in range(0, 30):
            axis_x.append(self.category[i], min_x + i * step)
        self._chart.setAxisX(axis_x, self._chart.series()[-1])
        # chart的图例
        legend = self._chart.legend()
        # 设置图例由Series来决定样式
        legend.setMarkerShape(QLegend.MarkerShapeFromSeries)
        # 遍历图例上的标记并绑定信号
        for marker in legend.markers():
            # 点击事件
            marker.clicked.connect(self.handleMarkerClicked)
            # 鼠标悬停事件
            marker.hovered.connect(self.handleMarkerHovered)
        self.setChart(self._chart)
Ejemplo n.º 12
0
def getChart(title):
    chart = QChart(title=title)
    for i, data_list in enumerate(m_dataTable):
        series = QLineSeries(chart)
        for value, _ in data_list:
            series.append(*value)
        series.setName("Series " + str(i))
        chart.addSeries(series)
    chart.createDefaultAxes()  # 创建默认的轴
    return chart
Ejemplo n.º 13
0
class ChartWidget(QWidget):
    def __init__(self, parent=None, ticker="BTC"):
        super().__init__(parent)
        uic.loadUi("chart.ui", self)
        self.ticker = ticker
        self.viewLimit = 128

        self.priceData = QLineSeries()
        self.priceChart = QChart()
        self.priceChart.addSeries(self.priceData)
        self.priceChart.legend().hide()

        axisX = QDateTimeAxis()
        axisX.setFormat("hh:mm:ss")
        axisX.setTickCount(4)
        dt = QDateTime.currentDateTime()
        axisX.setRange(dt, dt.addSecs(self.viewLimit))
        axisY = QValueAxis()
        axisY.setVisible(False)

        self.priceChart.addAxis(axisX, Qt.AlignBottom)
        self.priceChart.addAxis(axisY, Qt.AlignRight)
        self.priceData.attachAxis(axisX)
        self.priceData.attachAxis(axisY)
        self.priceChart.layout().setContentsMargins(0, 0, 0, 0)

        self.priceView.setChart(self.priceChart)
        self.priceView.setRenderHints(QPainter.Antialiasing)

        # ----------------- 추 가 ------------------
        self.pw = PriceWorker(ticker)
        self.pw.dataSent.connect(self.appendData)
        self.pw.start()
        # ------------------------------------------

    def appendData(self, currPirce):
        if len(self.priceData) == self.viewLimit:
            self.priceData.remove(0)
        dt = QDateTime.currentDateTime()
        self.priceData.append(dt.toMSecsSinceEpoch(), currPirce)
        self.__updateAxis()

    def __updateAxis(self):
        pvs = self.priceData.pointsVector()
        dtStart = QDateTime.fromMSecsSinceEpoch(int(pvs[0].x()))
        if len(self.priceData) == self.viewLimit:
            dtLast = QDateTime.fromMSecsSinceEpoch(int(pvs[-1].x()))
        else:
            dtLast = dtStart.addSecs(self.viewLimit)
        ax = self.priceChart.axisX()
        ax.setRange(dtStart, dtLast)

        ay = self.priceChart.axisY()
        dataY = [v.y() for v in pvs]
        ay.setRange(min(dataY), max(dataY))
Ejemplo n.º 14
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("Demo12_1, QChart基本绘图")
        self.resize(580, 420)

        #创建chart和chartView
        chart = QChart()  #创建 Chart
        chart.setTitle("简单函数曲线")

        chartView = QChartView(self)  #创建 ChartView
        chartView.setChart(chart)  #Chart添加到ChartView
        self.setCentralWidget(chartView)

        #创建曲线序列
        series0 = QLineSeries()
        series1 = QLineSeries()
        series0.setName("Sin曲线")
        series1.setName("Cos曲线")
        chart.addSeries(series0)  #序列添加到图表
        chart.addSeries(series1)

        #序列添加数值
        t = 0
        intv = 0.1
        pointCount = 100
        for i in range(pointCount):
            y1 = math.cos(t)
            series0.append(t, y1)
            y2 = 1.5 * math.sin(t + 20)
            series1.append(t, y2)
            t = t + intv

##创建坐标轴
        axisX = QValueAxis()  #X 轴
        axisX.setRange(0, 10)  #设置坐标轴范围
        axisX.setTitleText("time(secs)")  #标题
        ##    axisX.setLabelFormat("%.1f")     #标签格式
        ##    axisX.setTickCount(11)           #主分隔个数
        ##    axisX.setMinorTickCount(4)
        ##    axisX.setGridLineVisible(false)

        axisY = QValueAxis()  #Y 轴
        axisY.setRange(-2, 2)
        axisY.setTitleText("value")
        ##    axisY.setTickCount(5)
        ##    axisY.setMinorTickCount(4)
        ##    axisY.setLabelFormat("%.2f")     #标签格式
        ##    axisY.setGridLineVisible(false)

        #为序列设置坐标轴
        chart.setAxisX(axisX, series0)  #为序列设置坐标轴
        chart.setAxisY(axisY, series0)

        chart.setAxisX(axisX, series1)  #为序列设置坐标轴
        chart.setAxisY(axisY, series1)
Ejemplo n.º 15
0
 def add_data(self, xdata, ydata, color):
     curve = QLineSeries()
     pen = curve.pen()
     pen.setColor(color)
     pen.setWidthF(.1)
     curve.setPen(pen)
     curve.setUseOpenGL(True)
     curve.append(series_to_polyline(xdata, ydata))
     self.chart.addSeries(curve)
     self.chart.createDefaultAxes()
     self.ncurves += 1
Ejemplo n.º 16
0
    def on_run_pb_clicked(self):
        self.chart.removeAllSeries()
        min_function = 421.0
        ga_answer = 0.0
        correct = 0
        incorrect = 0

        ga = Ga(self.population_sb.value(), self.crossover_dsb.value(),
                self.mutation_dsb.value(), self.generation_sb.value(),
                self.elitism_cb.isChecked())

        progress_dialog = QProgressDialog('Repetitions...', 'Cancel', 0,
                                          self.repetitions_sb.value(),
                                          self.window)
        progress_dialog.setWindowModality(Qt.WindowModal)
        ga_output = ()
        for i in range(self.repetitions_sb.value()):
            ga_output = ga.run_generation()
            ga_answer = ga_output[0]

            if ga_answer == min_function:
                correct += 1
            else:
                incorrect += 1
            progress_dialog.setValue(i)

            if progress_dialog.wasCanceled():
                break

        progress_dialog.setValue(self.repetitions_sb.value())

        if self.single_run_rb.isChecked():
            self.x_result_l.setText(str(ga_answer))
            self.fx_l.setText('{0:.2f}'.format(ga.calc_function(ga_answer)))
            if ga_answer == min_function:
                self.icon_result_l.setPixmap('correct-icon.png')
            else:
                self.icon_result_l.setPixmap('incorrect-icon.png')

            # Graph
            series_1 = QLineSeries()
            series_1.setName('Average Fit')
            series_2 = QLineSeries()
            series_2.setName('Best Fit')
            for i in range(len(ga_output[1])):
                series_1.append(ga_output[1][i], ga_output[2][i])
                series_2.append(ga_output[1][i], ga_output[3][i])
            self.chart.addSeries(series_1)
            self.chart.addSeries(series_2)
            self.chart.createDefaultAxes()

        else:
            self.correct_results_l.setText(str(correct))
            self.incorrect_results_l.setText(str(incorrect))
Ejemplo n.º 17
0
    def fill_series(self, data):
        series = QLineSeries()
        series.setPointsVisible(True)

        xf = data[0]
        yf = data[1]

        for i in range(len(xf)):
            series.append(xf[i], yf[i])

        return series
Ejemplo n.º 18
0
class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQtChart Demo")
        self.setGeometry(500, 275, 650, 500)

        self.show()
        self.createLineChart()

    def createLineChart(self):
        self.font = QFont("Arial")
        self.font.setPixelSize(16)
        self.font.setBold(True)

        self.pen = QPen(QColor(0, 153, 0))
        self.pen.setWidth(3)

        self.series = QLineSeries(self)
        self.series.setPen(self.pen)

        self.x = np.arange(0, 2 * np.pi, 0.01)

        for i in self.x:
            self.series.append(i, np.sin(i))

        self.chart = QChart()
        self.chart.addSeries(self.series)
        self.chart.setAnimationOptions(QChart.SeriesAnimations)
        self.chart.setTitleFont(self.font)
        self.chart.setTitleBrush(QBrush(Qt.blue))
        self.chart.setTitle("Line Chart Demo")

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

        self.chartview = QChartView(self.chart)
        self.chartview.setRenderHint(QPainter.Antialiasing)

        self.axisX = QValueAxis()
        self.axisX.setRange(0, 2 * np.pi)
        self.axisX.setTickCount(6)
        self.axisX.setLabelFormat("%.1f")
        self.axisX.setTitleText("x")

        self.axisY = QValueAxis()
        self.axisY.setRange(0, 100)
        self.axisY.setLabelFormat("%d")
        self.axisY.setTitleText("sin(x)")

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

        self.setCentralWidget(self.chartview)
Ejemplo n.º 19
0
    def createSeries(self, dataArray):
        series = QLineSeries()
        for i in range(len(dataArray)):
            value = QPointF(i, dataArray[i][0])
            series.append(value)

        series.setColor(QColor(0, 255, 0))
        self.removeSeries()
        series.setName("灰度图")
        self.qchart.addSeries(series)

        self.lastSeries = series
Ejemplo n.º 20
0
    def __drawComparisonChart(self):
        self.__comparison_chart.removeAllSeries()
        series1 = QLineSeries(self)
        series2 = QLineSeries(self)
        series1.setName("Оптимальный")
        series2.setName("Другой")
        [(series1.append(i[0], i[1]), series2.append(i[0], i[2]))
         for i in self.__values]
        self.__comparison_chart.addSeries(series1)
        self.__comparison_chart.addSeries(series2)

        self.__comparison_chart.createDefaultAxes()
Ejemplo n.º 21
0
def test_generations():
    range_a = float(str(form.input_a_test.text()))
    range_b = float(str(form.input_b_test.text()))
    precision = int(str(form.input_d_test.text()))
    generations = int(str(form.input_generations_test.text()))

    app.setOverrideCursor(QtCore.Qt.WaitCursor)
    start = time()
    result  = test_generation(range_a, range_b, precision, generations)
    app.restoreOverrideCursor()

    chart = QChart()
    series = QLineSeries()

    form.test_table.setRowCount(0)

    form.test_table.insertRow(0)
    item = QtWidgets.QTableWidgetItem("iteracje")
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    form.test_table.setItem(0, 0, item)

    item = QtWidgets.QTableWidgetItem("wystąpienia")
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    form.test_table.setItem(0, 1, item)

    item = QtWidgets.QTableWidgetItem("%")
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    form.test_table.setItem(0, 2, item)

    for i in range(0, generations):
        percent = sum(result[:i+1])/100000*100
        series.append(i+1, percent)

        form.test_table.insertRow(i+1)
        form.test_table.setItem(i+1, 0, QtWidgets.QTableWidgetItem(str(i+1)))
        form.test_table.setItem(i+1, 1, QtWidgets.QTableWidgetItem(str(result[i])))
        form.test_table.setItem(i+1, 2, QtWidgets.QTableWidgetItem(str(round(percent, 2))))
 
    chart.addSeries(series)

    chart.setBackgroundBrush(QtGui.QColor(41, 43, 47))
    chart.createDefaultAxes()
    chart.legend().hide()
    chart.setContentsMargins(-10, -10, -10, -10)
    chart.layout().setContentsMargins(0, 0, 0, 0)
    chart.axisX().setTickCount(10)
    chart.axisY().setRange(0, 100)
    chart.axisY().setTickCount(11)
    chart.axisX().setLabelsColor(QtGui.QColor("white"))
    chart.axisY().setLabelsColor(QtGui.QColor("white"))
    form.widget_test.setChart(chart)
Ejemplo n.º 22
0
    def create_linechart(self):
        series = QLineSeries(self)
        for i in range(512):
            series.append(i, int.from_bytes(self.trace[i], "big"))

        self.osc_chart = QChart()
        self.osc_chart.addSeries(series)
        self.osc_chart.createDefaultAxes()
        self.osc_chart.setAnimationOptions(QChart.SeriesAnimations)
        self.osc_chart.setTitle("ESP32 Oscilloscope")

        self.osc_chart.legend().setVisible(True)
        self.osc_chart.legend().setAlignment(Qt.AlignBottom)
        self.osc_screen.setChart(self.osc_chart)
Ejemplo n.º 23
0
    def right_down_add_init(self):
        self.chart = QChart()
        self.chart.setTitle("Line Chart 1")
        series = QLineSeries(self.chart)

        series.append(0, 6)
        series.append(2, 4)
        self.chart.addSeries(series)
        self.chart.setBackgroundVisible(False)
        self.chart.createDefaultAxes()  # 创建默认轴
        self.view = QChartView(self.chart)
        self.view.setRenderHint(QPainter.Antialiasing)  # 抗锯齿
        self.right_down_layout.addWidget(self.view, 0, 0, 1, 1)
        series.append(1, 4)
Ejemplo n.º 24
0
    def get_line_series(self):
        """
        TODO:订单管理界面点击统计调用该函数,计算订单管理界面当前搜索范围内 每天 的订单销售总额,
             然后范围内 第一天 作为 第0天 即 i=0 按顺序以以下格式放入 series 和 category 中,series.append(i, 第 i 天销售额)
             category.append('20-7-07') <- 那天具体的日期
        """
        totals, category = self.database.stat_1(*self.data)
        series = QLineSeries()
        for i in range(len(category)):
            series.append(i, totals[i])
        if len(category) == 1:
            series.append(0, 0)

        return series, category
Ejemplo n.º 25
0
class ChartView(QChartView):
    def __init__(self):
        QChartView.__init__(self)
        #self.resize(300, 300)
        self.setRenderHint(QPainter.Antialiasing)  # 抗锯齿
        self.chart = QChart()
        self.seriesAcc = QLineSeries()
        self.seriesAcc.setName(CONF.leftUpNames[0])
        self.chart.addSeries(self.seriesAcc)
        #声明并初始化X轴,Y轴
        self.dtaxisX = QValueAxis()
        self.vlaxisY = QValueAxis()
        #设置坐标轴显示范围
        self.dtaxisX.setMin(0)
        #self.dtaxisX.setMax(100)
        self.vlaxisY.setMin(0)
        #self.vlaxisY.setMax(100)
        self.dtaxisX.setTickCount(3)
        self.vlaxisY.setTickCount(3)
        #设置坐标轴名称
        self.dtaxisX.setTitleText(CONF.leftUpNames[1])
        self.vlaxisY.setTitleText(CONF.leftUpNames[2])
        #设置网格不显示
        self.vlaxisY.setGridLineVisible(False)
        #把坐标轴添加到chart中
        self.chart.addAxis(self.dtaxisX, Qt.AlignBottom)
        self.chart.addAxis(self.vlaxisY, Qt.AlignLeft)

        self.seriesAcc.attachAxis(self.dtaxisX)
        self.seriesAcc.attachAxis(self.vlaxisY)

        self.initUI()

    def initUI(self):
        self.backend = BackendThread()
        self.backend.update_line.connect(self.handleLine)
        self.backend.start()

    def handleLine(self, data):
        if data[0] == 0:
            self.seriesAcc.clear()
        else:
            self.dtaxisX.setMax(data[0])
            self.vlaxisY.setMax(data[0])
            self.seriesAcc.clear()
            self.seriesAcc.append(0, 0)
            self.seriesAcc.append(data[0], data[1])

        self.setChart(self.chart)
Ejemplo n.º 26
0
 def initChart(self):
     self._chart = QChart(title="折线图堆叠")
     self._chart.setAcceptHoverEvents(True)
     # Series动画
     self._chart.setAnimationOptions(QChart.SeriesAnimations)
     dataTable = [["邮件营销", [120, 132, 101, 134, 90, 230, 210]],
                  ["联盟广告", [220, 182, 191, 234, 290, 330, 310]],
                  ["视频广告", [150, 232, 201, 154, 190, 330, 410]],
                  ["直接访问", [320, 332, 301, 334, 390, 330, 320]],
                  ["搜索引擎", [820, 932, 901, 934, 1290, 1330, 1320]]]
     for series_name, data_list in dataTable:
         series = QLineSeries(self._chart)
         for j, v in enumerate(data_list):
             series.append(j, v)
         series.setName(series_name)
         series.setPointsVisible(True)  # 显示圆点
         series.hovered.connect(self.handleSeriesHoverd)  # 鼠标悬停
         self._chart.addSeries(series)
     self._chart.createDefaultAxes()  # 创建默认的轴
     axisX = self._chart.axisX()  # x轴
     axisX.setTickCount(7)  # x轴设置7个刻度
     axisX.setGridLineVisible(False)  # 隐藏从x轴往上的线条
     axisY = self._chart.axisY()
     axisY.setTickCount(7)  # y轴设置7个刻度
     axisY.setRange(0, 1500)  # 设置y轴范围
     # 自定义x轴
     axis_x = QCategoryAxis(
         self._chart,
         labelsPosition=QCategoryAxis.AxisLabelsPositionOnValue)
     axis_x.setTickCount(7)
     axis_x.setGridLineVisible(False)
     min_x = axisX.min()
     max_x = axisX.max()
     step = (max_x - min_x) / (7 - 1)  # 7个tick
     for i in range(0, 7):
         axis_x.append(self.category[i], min_x + i * step)
     self._chart.setAxisX(axis_x, self._chart.series()[-1])
     # self._chart.addAxis(axis_x, Qt.AlignBottom)
     # chart的图例
     legend = self._chart.legend()
     # 设置图例由Series来决定样式
     legend.setMarkerShape(QLegend.MarkerShapeFromSeries)
     # 遍历图例上的标记并绑定信号
     for marker in legend.markers():
         # 点击事件
         marker.clicked.connect(self.handleMarkerClicked)
         # 鼠标悬停事件
         marker.hovered.connect(self.handleMarkerHovered)
     self.setChart(self._chart)
Ejemplo n.º 27
0
    def createLineChart(self):
        chart = QChart()
        chart.setTitle("Line chart")

        for i, data_list in enumerate(self.m_dataTable):
            series = QLineSeries(chart)
            for value, _ in data_list:
                series.append(value)

            series.setName("Series " + str(i))
            chart.addSeries(series)

        chart.createDefaultAxes()

        return chart
Ejemplo n.º 28
0
    def createLineChart(self):
        chart = QChart()
        chart.setTitle("Line chart")

        for i, data_list in enumerate(self.m_dataTable):
            series = QLineSeries(chart)
            for value, _ in data_list:
                series.append(value)

            series.setName("Series " + str(i))
            chart.addSeries(series)

        chart.createDefaultAxes()

        return chart
 def add_data(self, data, chart, color=None):
     curve = QLineSeries(chart)
     curve.setName("latency")
     pen = curve.pen()
     if color is not None:
         pen.setColor(color)
     pen.setWidthF(1)
     curve.setPen(pen)
     curve.setUseOpenGL(True)
     for x in data:
         curve.append(x[0], x[1])
     # curve.append(series_to_polyline(xdata, ydata))
     chart.addSeries(curve)
     chart.createDefaultAxes()
     return curve
Ejemplo n.º 30
0
    def rewrite_data(self, args):

        self.layout = QVBoxLayout()
        self.grid.addLayout(self.layout, 0, 0, 1, 1)
        for key, value in self.data[args].items():
            chart = QChart()
            chart_view = QChartView(chart)
            series = QLineSeries()
            series.setName(key)

            for i in value:
                series.append(QPointF(i[0], i[1]))

            chart.addSeries(series)
            chart.createDefaultAxes()
            self.layout.addWidget(chart_view)
Ejemplo n.º 31
0
def XLineSeries(data_dict, key_order=None, xkey = None, openGL=False):
    if key_order == None:
        key_order = data_dict.keys()

    series = []
    if xkey == None:
        xkey = list(key_order)[0]
    for key in key_order-xkey:
        set = QLineSeries(); set.setName(key)
        if openGL:
            set.setUseOpenGL(True)        
        for i, (itemx, itemy) in enumerate(zip_longest(data_dict[xkey],data_dict[key])):
            set.append(itemx, itemy)

        series.append(set)
    return series
Ejemplo n.º 32
0
    def addSeries(
            self, _x2idx: typing.Dict, _idx2x: list, _chart: QChart,
            _axis_x: QValueAxis, _axis_y: QValueAxis
    ):
        series = QLineSeries()
        series.setName(self.name)
        for x, y in zip(self.x_list, self.y_list):
            series.append(_x2idx[x], y)
        if self.color is not None:
            series.setColor(self.color)

        _chart.addSeries(series)
        _chart.setAxisX(_axis_x, series)
        _chart.setAxisY(_axis_y, series)

        if self.show_value:
            self.createShow()