def __init__(self):
        super().__init__()

        self.m_chart_1 = QChart()
        self.m_chart_2 = QChart()
        self.m_chart_3 = QChart()
        self.m_chart_4 = QChart()
        self.m_series_1 = QLineSeries()
        self.m_series_2 = QLineSeries()
        self.m_series_3 = QLineSeries()
        self.m_series_4 = QLineSeries()

        self.y_original = []
        self.x_data = []
        self.y_processed = []
        self.sampling_rate = 0

        self.pathForVocalMute = ""

        self.select_action_drop = QComboBox()

        self.echo_shift = 0.4
        self.echo_alpha = 0.5

        self.init_ui()
Пример #2
0
 def showRecords(self):
     self.w = QWidget()
     self.w.show()
     self.hide()
     self.gridLayout = QtWidgets.QVBoxLayout(self.w)
     self.text = QtWidgets.QLabel(self.w)
     self.chart = QChart()
     self.chart2 = QChart()
     self.chart3 = QChart()
     self.text.setText("none")
     self.backButton = QtWidgets.QPushButton(self.w)
     self.chartView = QChartView(self.chart)
     self.chartView.setRenderHint(QtGui.QPainter.Antialiasing)
     # self.chartView2.setRenderHint(QtGui.QPainter.Antialiasing)
     # self.chartView3.setRenderHint(QtGui.QPainter.Antialiasing)
     self.gridLayout.addWidget(self.chartView)
     # self.gridLayout.addWidget(self.chartView3)
     self.backButton.setText("Back")
     self.gridLayout.addWidget(self.backButton)
     self.backButton.clicked.connect(self.back)
     self.recive = True
     # self.series2 = QLineSeries(self.chart2)
     # self.series3 = QLineSeries(self.chart3)
     self.series = QLineSeries(self.chart)
     self.series2 = QLineSeries(self.chart)
     self.series3 = QLineSeries(self.chart)
     # self.series2.setUseOpenGL(True)
     # self.series3.setUseOpenGL(True)
     self.series.setUseOpenGL(True)
     self.series2.setUseOpenGL(True)
     self.series3.setUseOpenGL(True)
     # self.chart.addSeries(self.series)
     self.startServer()
Пример #3
0
    def __init__(self):
        super().__init__()

        self.__car = car.motion()
        self.__car.param.fromJSON(car.defaultParams())
        self.__canbus = None

        self.__translator = QTranslator(self)

        self.setupUi(self)

        self.positionChart = QChart()
        self.positionSeries = QLineSeries()        

        self.speedChart = QChart()
        self.speedSeries = QLineSeries()

        self.fuelChart = QChart()
        self.fuelSeries = QLineSeries()

        self.engineChart = QChart()
        self.engineSeries = QLineSeries()

        self.positionChart.addSeries(self.positionSeries)
        self.speedChart.addSeries(self.speedSeries)
        self.fuelChart.addSeries(self.fuelSeries)
        self.engineChart.addSeries(self.engineSeries)

        self.positionChart.legend().hide()
        self.speedChart.legend().hide()
        self.fuelChart.legend().hide()
        self.engineChart.legend().hide()   

        self.positionChart.createDefaultAxes()
        self.speedChart.createDefaultAxes()
        self.fuelChart.createDefaultAxes()
        self.engineChart.createDefaultAxes()
        
        self.positionChart.setTitle("Position")
        self.speedChart.setTitle("Speed")
        self.fuelChart.setTitle("Fuel")
        self.engineChart.setTitle("Engine")

        self.positionChart.setMargins(QMargins())
        self.speedChart.setMargins(QMargins())
        self.fuelChart.setMargins(QMargins())
        self.engineChart.setMargins(QMargins())

        self.positionChartW.setChart(self.positionChart)
        self.speedChartW.setChart(self.speedChart)
        self.fuelChartW.setChart(self.fuelChart)
        self.engineChartW.setChart(self.engineChart)

        self.populateFields()

        for file in os.listdir(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lang')):
            if file.startswith('carSim_') and file.endswith('.qm'):
                self.langSelector.addItem(file[7:-3])
Пример #4
0
 def _initial_chart(self, chart_data):
     self.setWindowTitle(chart_data['name'])
     header_data = chart_data['header_data']
     header_data.pop(0)  # 去掉id
     table_data = chart_data['table_data']
     # 转为pandas DataFrame
     table_df = pd.DataFrame(table_data)
     table_df.drop(columns=[0], inplace=True)  # 删除id列
     table_df.columns = [i for i in range(table_df.shape[1])]  # 重置列索引
     table_df[0] = pd.to_datetime(table_df[0])  # 第一列转为时间类型
     table_df.sort_values(by=0, inplace=True)
     try:
         if chart_data['start'] and chart_data['end']:
             start_date = pd.to_datetime(chart_data['start'])
             end_date = pd.to_datetime(chart_data['end'])
             table_df = table_df[(start_date <= table_df[0])
                                 & (table_df[0] <= end_date)]
         elif chart_data['start']:
             start_date = pd.to_datetime(chart_data['start'])
             table_df = table_df[(start_date <= table_df[0])]
         elif chart_data['end']:
             end_date = pd.to_datetime(chart_data['end'])
             table_df = table_df[(table_df[0] <= end_date)]
         else:
             pass
         # print(chart_data)
         x_bottom = (json.loads(chart_data['x_bottom']))
         y_left = json.loads(chart_data['y_left'])
         y_right = json.loads(chart_data['y_right'])
         # 根据图表类型画图
         if chart_data['category'] == 'line':
             chart = lines_stacked(name=chart_data['name'],
                                   table_df=table_df,
                                   x_bottom_cols=x_bottom,
                                   y_left_cols=y_left,
                                   y_right_cols=y_right,
                                   legend_labels=header_data,
                                   tick_count=40)
         elif chart_data['category'] == 'bar':
             chart = bars_stacked(name=chart_data['name'],
                                  table_df=table_df,
                                  x_bottom_cols=x_bottom,
                                  y_left_cols=y_left,
                                  y_right_cols=y_right,
                                  legend_labels=header_data,
                                  tick_count=40)
         else:
             chart = QChart()
     except Exception:
         chart = QChart()
     return chart
Пример #5
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        try:
            self.maxVal = float(list(data.values())[0])

            if self.maxVal * 60 < 1:
                self.set0 = QBarSet('Seconds')
                self.set0.append(
                    [round(float(x) * 60 * 60, 1) for x in data.values()])
                self.maxVal = round(self.maxVal * 60 * 60, 1)
            elif self.maxVal < 1:
                self.set0 = QBarSet('Minutes')
                self.set0.append(
                    [round(float(x) * 60, 1) for x in data.values()])
                self.maxVal = round(self.maxVal * 60, 1)
            else:
                self.set0 = QBarSet('Hours')
                self.set0.append([round(float(x), 1) for x in data.values()])
                self.maxVal = round(self.maxVal, 1)
        except:
            self.set0 = QBarSet('NotEnoughData')

        self.series = QBarSeries()
        self.series.append(self.set0)

        self.chart = QChart()
        self.chart.setTheme(QChart.ChartThemeHighContrast)
        self.chart.addSeries(self.series)
        self.chart.setTitle(header)
        self.chart.setAnimationOptions(QChart.SeriesAnimations)

        months = (data.keys())

        self.axisX = QBarCategoryAxis()
        self.axisX.append(months)

        self.axisY = QValueAxis()
        try:
            self.axisY.setRange(0, self.maxVal)
            if self.maxVal > 19:
                self.axisY.setTickCount(15)
            elif self.maxVal > 10:
                self.axisY.setTickCount(10)
            else:
                self.axisY.setTickCount(5)
            #axisY.setTickInterval(1)
            #axisY.applyNiceNumbers()
        except:
            self.chart.setTitle("No Data")
        self.chart.addAxis(self.axisX, Qt.AlignBottom)
        self.chart.addAxis(self.axisY, Qt.AlignLeft)

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

        self.chartView = QChartView(self.chart)
        self.vert_l = QVBoxLayout()
        self.vert_l.addWidget(self.chartView)
        self.setLayout(self.vert_l)
Пример #6
0
 def initChart(self, xAxis):
     self._chart = QChart()
     #调整边距
     self._chart.layout().setContentsMargins(0, 0, 0, 0)  #外界
     self._chart.setMargins(QMargins(3, 0, 3, 0))  #内界
     self._chart.setBackgroundRoundness(0)
     self._chart.setBackgroundVisible(False)
     #设置主题
     self._chart.setTheme(QChart.ChartThemeBlueIcy)
     # 抗锯齿
     self.setRenderHint(QPainter.Antialiasing)
     # 开启动画效果
     self._chart.setAnimationOptions(QChart.SeriesAnimations)
     self.categories = xAxis
     self._series = QPercentBarSeries(self._chart)
     self._chart.addSeries(self._series)
     axis_x = QBarCategoryAxis(self._chart)
     axis_x.append(self.categories)
     axis_x.setLabelsAngle(280)
     axis_y = QValueAxis(self._chart)
     axis_y.setTitleText("比例")
     axis_y.setRange(0, 100)
     self._chart.addAxis(axis_x, Qt.AlignBottom)
     self._chart.addAxis(axis_y, Qt.AlignLeft)
     self._series.attachAxis(axis_x)
     self._series.attachAxis(axis_y)
     self.setChart(self._chart)
Пример #7
0
 def __init__(self, host, history, history_size, *args, **kwargs):
     super(MainWindow, self).__init__(*args, **kwargs)
     self.host = host
     self.history = history
     self.history_size = history_size
     self.setupUi(self)
     self.setWindowFlag(Qt.WindowStaysOnTopHint)
     self.position_to_dock()
     self.series_delay = QLineSeries()
     self.series_loss = QLineSeries()
     self.axis_X = QDateTimeAxis()  # pylint: disable=invalid-name
     self.axis_X.setTickCount(3)
     self.axis_X.setFormat("HH:mm")
     self.axis_X.setTitleText("Time")
     self.chart = QChart()
     self.chart.addSeries(self.series_delay)
     self.chart.addSeries(self.series_loss)
     self.chart.setTitle(f"Connection to {self.host}")
     self.init_series(self.series_delay, "Delay ms")
     self.init_series(self.series_loss, "Loss %")
     self.chart.legend().setVisible(False)
     self.chart.legend().setAlignment(Qt.AlignBottom)
     self.chart.layout().setContentsMargins(0, 0, 0, 0)
     self.chart.setBackgroundRoundness(0)
     self.chart.setMargins(QMargins(0, 0, 0, 0))
     self.chartWidget.setChart(self.chart)
     self.chartWidget.setRenderHint(QPainter.Antialiasing)
Пример #8
0
    def __init__(self, title: str):
        self.true_series: QScatterSeries = QScatterSeries()
        self.false_series: QScatterSeries = QScatterSeries()
        self.chart: QChart = QChart()
        self.view: QChartView = QChartView(self.chart)

        self.chart.addSeries(self.true_series)
        self.chart.addSeries(self.false_series)
        self.chart.setTheme(QChart.ChartThemeDark)
        self.chart.setMargins(QMargins(0, 0, 0, 0))
        self.chart.setBackgroundRoundness(0)
        self.chart.legend().hide()
        self.chart.layout().setContentsMargins(0, 0, 0, 0)
        self.chart.setMaximumHeight(Chart.MAXIMUM_CHART_HEIGHT)

        self.true_series.setMarkerShape(QScatterSeries.MarkerShapeRectangle)
        self.false_series.setMarkerShape(QScatterSeries.MarkerShapeRectangle)
        self.true_series.setColor(Chart.TRUE_COLOR)
        self.false_series.setColor(Chart.FALSE_COLOR)

        self.chart.createDefaultAxes()
        for axis in self.chart.axes(Qt.Horizontal):
            axis.setVisible(False)
            axis.setGridLineVisible(False)
            axis.setRange(0.0, 1000.0)
        for axis in self.chart.axes(Qt.Vertical):
            axis.setVisible(False)
            axis.setGridLineVisible(False)
            axis.setRange(-0.5, 0.5)
Пример #9
0
    def __init__(self, parent=None, ticker="BTC"):
        super().__init__(parent)
        uic.loadUi("resource/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)
Пример #10
0
    def __init__(self, spec):
        super().__init__(None)
        self.spec = spec
        self.chart = QChart()
        # self.chart.setTitle(str(self.spec.variables))
        # self.chart.legend().hide()

        for i in range(len(self.spec.variables)):
            series = QLineSeries()
            series.setColor(
                QColor(
                    self.spec.colors[i][0],
                    self.spec.colors[i][1],
                    self.spec.colors[i][2],
                ))
            series.setName(self.spec.variables[i])
            self.chart.addSeries(series)

        self.setMinimumWidth(400)
        self.setMinimumHeight(230)

        self.setChart(self.chart)
        self.setRenderHint(QPainter.Antialiasing)
        self.chart.createDefaultAxes()
        self.autoscale_y_axis = True
        if self.spec.min_y and self.spec.max_y:
            self.autoscale_y_axis = False
            self.chart.axes()[1].setRange(self.spec.min_y, self.spec.max_y)

        self._updates_per_second = 60
        self._data = []
        self._min = 0
        self._max = 0
    def show_diagram(self):
        self.student_diagram_ui.label_4.setText(self.label_2.text())
        self.student_diagram_ui.label_7.setText(self.label_8.text())
        self.student_diagram_ui.label_8.setText(self.label_6.text())
        self.student_diagram_ui.label_10.setText(self.label_4.text())

        max_value = 0
        series = QBarSeries()
        for i in self.result:
            set0 = QBarSet(i[0])
            set0.append(float(i[1]))
            series.append(set0)
            if max_value < (float(i[1])):
                max_value = float(i[1])

        axisY = QValueAxis()
        axisY.setRange(0, max_value)

        chart = QChart()
        series.attachAxis(axisY)
        chart.addSeries(series)
        chart.setAnimationOptions(QChart.SeriesAnimations)

        chart.addAxis(axisY, Qt.AlignLeft)
        chart.legend().setVisible(True)
        chart.legend().setAlignment(Qt.AlignBottom)
        centralwidget = self.student_diagram_ui.centralwidget
        self.student_diagram_ui.chartview = QChartView(chart, centralwidget)
        self.student_diagram_ui.chartview.setGeometry(QtCore.QRect(10, 110, 880, 371))
        self.student_diagram_ui.pushButton_3.show()
        self.student_diagram_ui.update(self.dark_theme)
        self.student_diagram_window.show()
Пример #12
0
    def initChart(self, xAxis):
        self._chart = QChart()
        # 调整边距
        self._chart.layout().setContentsMargins(0, 0, 0, 0)  # 外界
        self._chart.setMargins(QMargins(3, 0, 3, 0))  # 内界
        self._chart.setBackgroundRoundness(0)
        self._chart.setBackgroundVisible(False)
        # 设置主题
        self._chart.setTheme(QChart.ChartThemeBlueIcy)
        # 抗锯齿
        self.setRenderHint(QPainter.Antialiasing)
        # 开启动画效果
        self._chart.setAnimationOptions(QChart.SeriesAnimations)
        self.categories = xAxis
        self._series = QBarSeries(self._chart)
        self._chart.addSeries(self._series)
        self._chart.createDefaultAxes()  # 创建默认的轴
        self._axis_x = QBarCategoryAxis(self._chart)
        self._axis_x.append(self.categories)
        self._axis_y = QValueAxis(self._chart)
        self._axis_y.setTitleText("任务数")
        self._axis_y.setRange(0, 10)
        self._chart.setAxisX(self._axis_x, self._series)
        self._chart.setAxisY(self._axis_y, self._series)
        # chart的图例
        legend = self._chart.legend()
        legend.setVisible(True)

        self.setChart(self._chart)
Пример #13
0
    def chart_init(self):
        self.chart = QChart()
        self.series = QSplineSeries()
        #设置曲线名称
        self.series.setName("实时数据")
        #把曲线添加到QChart的实例中
        self.chart.addSeries(self.series)
        #声明并初始化X轴,Y轴
        self.dtaxisX = QDateTimeAxis()
        self.vlaxisY = QValueAxis()
        #设置坐标轴显示范围
        self.dtaxisX.setMin(QDateTime.currentDateTime().addSecs(-300 * 1))
        self.dtaxisX.setMax(QDateTime.currentDateTime().addSecs(0))
        self.vlaxisY.setMin(0)
        self.vlaxisY.setMax(1500)
        #设置X轴时间样式
        self.dtaxisX.setFormat("MM月dd hh:mm:ss")
        #设置坐标轴上的格点
        self.dtaxisX.setTickCount(6)
        self.vlaxisY.setTickCount(11)
        #设置坐标轴名称
        self.dtaxisX.setTitleText("时间")
        self.vlaxisY.setTitleText("量程")
        #设置网格不显示
        self.vlaxisY.setGridLineVisible(False)
        #把坐标轴添加到chart中
        self.chart.addAxis(self.dtaxisX, Qt.AlignBottom)
        self.chart.addAxis(self.vlaxisY, Qt.AlignLeft)
        #把曲线关联到坐标轴
        self.series.attachAxis(self.dtaxisX)
        self.series.attachAxis(self.vlaxisY)

        self.setChart(self.chart)
Пример #14
0
    def createLineChart(self):
        chart = QChart()
        chart.setTitle("像素分布直方图")
        seriesArray = []

        # for i, data_list in enumerate(self.m_dataTable):
        #     series = QLineSeries()
        #     for value, _ in data_list:
        #         series.append(value)
        #     series.setName("Series " + str(i))
        #     seriesArray.append(series)
        #     chart.addSeries(series)

        axisX = QValueAxis()
        axisY = QValueAxis()
        axisX.setRange(0, 255)
        axisY.setRange(0, 50000)

        chart.setAxisX(axisX)
        chart.setAxisY(axisY)

        # for i in seriesArray:
        #     chart.removeSeries(i)

        return chart
Пример #15
0
 def _init_chart(self) -> None:
     series = QBarSeries()
     axis_x = QBarCategoryAxis()
     axis_y = QValueAxis()
     data_set = defaultdict(int)
     for title, money in self.base:
         data_set[title] += money
     for title, money in data_set.items():
         bar = QBarSet(title)
         axis_x.append(title)
         bar.append(money)
         series.append(bar)
     #
     self.chart = QChart()
     self.chart.addSeries(series)
     self.chart.setAnimationOptions(QChart.SeriesAnimations)
     #
     series.attachAxis(axis_x)
     self.chart.addAxis(axis_x, Qt.AlignBottom)
     axis_y.setRange(0, max(data_set.values()))
     axis_y.setTickCount(11)
     self.chart.addAxis(axis_y, Qt.AlignLeft)
     series.attachAxis(axis_y)
     #
     self.chart.legend().setVisible(True)
     self.chart.legend().setAlignment(Qt.AlignBottom)
Пример #16
0
    def __iniChart(self):  ##图表初始化
        self.chart = QChart()  #创建 chart
        self.chart.setTitle("二阶系统频率特性")
        self.chart.legend().setVisible(True)
        self.ui.chartView.setChart(self.chart)  #chart添加到chartView

        ##2. 创建坐标轴
        ## bottom 轴是 QLogValueAxis
        self.__axisFreq = QLogValueAxis()
        self.__axisFreq.setLabelFormat("%.1f")  #标签格式
        self.__axisFreq.setTitleText("角频率(rad/sec)")
        self.__axisFreq.setRange(0.1, 100)
        self.__axisFreq.setMinorTickCount(9)
        self.chart.addAxis(self.__axisFreq, Qt.AlignBottom)

        ## left 轴是 QValueAxis
        self.__axisMag = QValueAxis()
        self.__axisMag.setTitleText("幅度(dB)")
        self.__axisMag.setRange(-40, 10)
        self.__axisMag.setTickCount(6)
        self.__axisMag.setLabelFormat("%.1f")  #标签格式
        self.chart.addAxis(self.__axisMag, Qt.AlignLeft)

        ## right 轴是 QValueAxis
        self.__axisPhase = QValueAxis()
        self.__axisPhase.setTitleText("相位(度)")
        self.__axisPhase.setRange(-200, 0)
        self.__axisPhase.setTickCount(6)
        self.__axisPhase.setLabelFormat("%.0f")  #标签格式
        self.chart.addAxis(self.__axisPhase, Qt.AlignRight)
Пример #17
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
Пример #18
0
    def __init__(self, spec):
        super().__init__(None)
        self.spec = spec
        self.chart = QChart()
        # self.chart.setTitle(str(self.spec.variables))
        self.chart.legend().hide()
        self.mainset = QBarSet("")
        self.mainset.append([0 for i in range(len(spec.variables))])
        self.mainset.setColor(
            QColor(spec.color[0], spec.color[1], spec.color[2]))
        self.series = QBarSeries()
        self.series.append(self.mainset)

        self.setMinimumWidth(400)
        self.setMinimumHeight(230)

        self.axis_x = QBarCategoryAxis()
        self.axis_y = QValueAxis()
        self.axis_x.append(spec.variables)
        self.chart.addSeries(self.series)
        self.chart.setAxisX(self.axis_x, self.series)
        self.chart.setAxisY(self.axis_y, self.series)

        self.setChart(self.chart)
        self.setRenderHint(QPainter.Antialiasing)

        self._updates_per_second = 10
        self._dataset = []
Пример #19
0
    def unlinkedChartDist(self, data):
        chart = QChart()
        chart.setAnimationOptions(QChart.SeriesAnimations)
        self.getCertainRangeList(data)

        chartView = QChartView(chart)
        return chartView
Пример #20
0
    def __init__(self, spec):
        super().__init__(None)
        self.spec = spec
        self.chart = QChart()
        self.chart.setTitle(str(self.spec.variable))
        self.chart.legend().hide()

        self.setMinimumWidth(400)
        self.setMinimumHeight(230)

        self.setChart(self.chart)
        self.setRenderHint(QPainter.Antialiasing)
        self.chart.createDefaultAxes()
        self.autoscale_y_axis = True
        if self.spec.min_y and self.spec.max_y:
            self.autoscale_y_axis = False
            self.chart.axes()[1].setRange(self.spec.min_y, self.spec.max_y)

        self.axis_x = QValueAxis()
        self.axis_y = QValueAxis()
        self.chart.addAxis(self.axis_x, Qt.AlignBottom)
        self.chart.addAxis(self.axis_y, Qt.AlignLeft)

        self._updates_per_second = 60
        self._data = []
        self._min = 0
        self._max = 0
Пример #21
0
    def bargraph(self):
        '''
        Processes and Creates Bar Graph.
        '''
        self.barchart = self.findChild(QChartView, "attackgraph")
        bardata = self.data.getBar()
        chartobj = Barchart(bardata)
        chartseries = chartobj.getSeries()

        # create QChart object and add data
        chart = QChart()
        chart.addSeries(chartseries)
        chart.setTitle("Attacks Over the Past 12 Months")
        chart.setAnimationOptions(QChart.SeriesAnimations)

        axisX = QBarCategoryAxis()
        axisX.append(chartobj.getKeys())
        chart.addAxis(axisX, Qt.AlignBottom)

        axisY = QValueAxis()
        axisY.setRange(0, chartobj.getMax())
        chart.addAxis(axisY, Qt.AlignLeft)

        chart.legend().setVisible(False)

        self.barchart.setChart(chart)
Пример #22
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 = [QLineSeries() for _ in range(self.nseries)]
        self.chart = 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 = QChartView(self.chart)
        chart_view.setRenderHint(QPainter.Antialiasing)
        layout.addWidget(chart_view)

        self.x_max = 2
        self.y_pts = list()
Пример #23
0
    def createChartView(
            self, _x2idx: dict, _idx2x: list
    ) -> QHBoxLayout:
        chart = QChart()

        # assign y range
        self.calcRangeY()
        self.setAxisY(self.begin_y, self.end_y)

        value_layout = QFormLayout()
        # add each series
        for v in self.series_table.values():
            v.addSeries(_x2idx, _idx2x, chart, self.axis_x, self.axis_y)
            if v.show_value:
                value_layout.addWidget(v.show_group)

        # create chartview and layout for view and value
        chartview = ChartView(chart, self.wizard)
        chartview.setRenderHint(QPainter.Antialiasing)

        global_layout = QHBoxLayout()
        global_layout.addWidget(chartview, self.chart_stretch)
        global_layout.addLayout(value_layout)

        return global_layout
Пример #24
0
    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        self.resize(400, 300)
        # 抗锯齿
        self.setRenderHint(QPainter.Antialiasing)

        # 图表
        chart = QChart()
        self.setChart(chart)
        # 设置标题
        chart.setTitle('Simple barchart example')
        # 开启动画效果
        chart.setAnimationOptions(QChart.SeriesAnimations)
        # 添加Series
        series = self.getSeries()
        chart.addSeries(series)
        # 分类
        categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
        # 分类x轴
        axis = QBarCategoryAxis()
        axis.append(categories)
        # 创建默认轴线
        chart.createDefaultAxes()
        # 替换默认x轴
        chart.setAxisX(axis, series)
        # 显示图例
        chart.legend().setVisible(True)
        chart.legend().setAlignment(Qt.AlignBottom)
Пример #25
0
    def __init__(self, theme='day', parent=None):
        super().__init__(parent)
        # Holds the raw input to be checked for actionable data to display.
        self.input_buffer = []
        # Holds the raw actionable data detected while plotting.
        self.raw_data = []
        self.setObjectName('plotterpane')
        self.max_x = 100  # Maximum value along x axis
        self.max_y = 1000  # Maximum value +/- along y axis
        self.flooded = False  # Flag to indicate if data flooding is happening.

        # Holds deques for each slot of incoming data (assumes 1 to start with)
        self.data = [deque([0] * self.max_x), ]
        # Holds line series for each slot of incoming data (assumes 1 to start
        # with).
        self.series = [QLineSeries(), ]

        # Ranges used for the Y axis (up to 1000, after which we just double
        # the range).
        self.y_ranges = [1, 5, 10, 25, 50, 100, 250, 500, 1000]

        # Set up the chart with sensible defaults.
        self.chart = QChart()
        self.chart.legend().hide()
        self.chart.addSeries(self.series[0])
        self.axis_x = QValueAxis()
        self.axis_y = QValueAxis()
        self.axis_x.setRange(0, self.max_x)
        self.axis_y.setRange(-self.max_y, self.max_y)
        self.axis_x.setLabelFormat("time")
        self.axis_y.setLabelFormat("%d")
        self.chart.setAxisX(self.axis_x, self.series[0])
        self.chart.setAxisY(self.axis_y, self.series[0])
        self.setChart(self.chart)
        self.setRenderHint(QPainter.Antialiasing)
Пример #26
0
    def __init__(self, parent=None):
        super(RectZoomMoveView, self).__init__(parent)
        self.setChart(QChart())
        self.chart().setMargins(QMargins(5, 5, 5, 5))
        self.chart().setContentsMargins(-10, -10, -10, -10)
        self.chart().setTitle(" ")
        self.relationState = True

        # Define two rectangles for background and drawing respectively
        self.parentRect = QGraphicsRectItem(self.chart())

        self.parentRect.setFlag(QGraphicsItem.ItemClipsChildrenToShape, True)
        self.parentRect.setFlag(QGraphicsItem.ItemSendsGeometryChanges, True)
        self.RangeItem = RectRangeItem(parent=self.parentRect)
        self.RangeItem.setZValue(998)
        pen = QPen(Qt.gray)
        pen.setWidth(1)
        self.parentRect.setPen(pen)
        self.parentRect.setZValue(997)

        self.scene().addItem(self.parentRect)
        self.scene().addItem(self.RangeItem)

        self.RangeItem.hide()
        self.m_chartRectF = QRectF()
        self.m_rubberBandOrigin = QPointF(0, 0)
        self.dataLength = 0

        self.RangeItem.selectedChange.connect(self.changeFromRectItem)

        self.BtnsWidget = ViewButtonsWidget(self)
        self.BtnsWidget.refreshBtn.clicked.connect(self.updateView)
        self.BtnsWidget.RelationSig.connect(self.setRelationState)
        self.BtnsWidget.dateRangeEdit.dateRangeSig.connect(self.changDateRect)
Пример #27
0
 def initChart(self):
     self._chart = QChart(title="柱状图堆叠")
     self._chart.setAcceptHoverEvents(True)
     # Series动画
     self._chart.setAnimationOptions(QChart.SeriesAnimations)
     self.categories = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
     # names = ["邮件营销", "联盟广告", "视频广告", "直接访问", "搜索引擎"]
     names = ["邮件营销", ]
     series = QBarSeries(self._chart)
     for name in names:
         bar = QBarSet(name)
         # 随机数据
         for _ in range(7):
             bar.append(randint(0, 10))
             
         series.append(bar)
         bar.hovered.connect(self.handleBarHoverd)  # 鼠标悬停
     self._chart.addSeries(series)
     self._chart.createDefaultAxes()  # 创建默认的轴
     # x轴
     axis_x = QBarCategoryAxis(self._chart)
     axis_x.append(self.categories)
     self._chart.setAxisX(axis_x, series)
     # chart的图例
     legend = self._chart.legend()
     legend.setVisible(True)
     # 遍历图例上的标记并绑定信号
     for marker in legend.markers():
         # 点击事件
         marker.clicked.connect(self.handleMarkerClicked)
         # 鼠标悬停事件
         marker.hovered.connect(self.handleMarkerHovered)
     self.setChart(self._chart)
Пример #28
0
    def __init__(self, number: int, parent=None):
        super(QWidget, self).__init__(parent)

        self.layout = QVBoxLayout(self)

        self.chart = QChart()
        self.chartView = QChartView(self.chart)
        self.chartView.setRenderHint(QPainter.Antialiasing)  # 抗锯齿
        self.layout.addWidget(self.chartView)

        self.channelNumber = number
        for index in range(self.channelNumber):
            tmp = QLineSeries()
            tmp.setName("channel "+str(index))
            self.chart.addSeries(tmp)

        self.chart.createDefaultAxes()
        self.chart.axisX().setRange(0, 25)
        self.chart.axisX().setTitleText("AAA")
        self.chart.axisY().setRange(0, 25)
        self.chart.axisY().setTitleText("BBB")

        # 标题
        self.chart.setTitle("XXX XXX XXX")
        # 指示颜色所代表的内容
        # self.chart.legend().hide()
        # 动画效果
        self.chart.setAnimationOptions(QChart.AllAnimations)
Пример #29
0
    def create_linechart(self):

        series = QLineSeries(self)
        series.append(0, 6)
        series.append(2, 4)
        series.append(3, 8)
        series.append(7, 4)
        series.append(10, 5)

        series << QPointF(11, 1) << QPointF(13, 3) << QPointF(
            17, 6) << QPointF(18, 3) << QPointF(20, 2)

        chart = QChart()

        chart.addSeries(series)
        chart.createDefaultAxes()
        chart.setAnimationOptions(QChart.SeriesAnimations)
        chart.setTitle("Line Chart Example")

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

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

        self.setCentralWidget(chartview)
Пример #30
0
    def __init__(self, parent=None, ticker="BTCUSDT"):
        super().__init__(parent)
        uic.loadUi("resource/chart.ui", self)
        self.ticker = ticker
        self.viewLimit = 10

        self.tm = []

        self.priceData = QCandlestickSeries()
        self.priceData.setDecreasingColor(Qt.red)
        self.priceData.setIncreasingColor(Qt.green)
        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()