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()
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()
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])
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
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)
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)
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)
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)
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)
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()
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)
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)
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
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)
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)
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, 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 = []
def unlinkedChartDist(self, data): chart = QChart() chart.setAnimationOptions(QChart.SeriesAnimations) self.getCertainRangeList(data) chartView = QChartView(chart) return chartView
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
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)
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()
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
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)
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)
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)
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)
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)
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)
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()