def __init__(self, parent=None): super(TableWidget, self).__init__(parent) # Create a simple model for storing data. model = CustomTableModel() # Create the table view and add the model to it. tableView = QTableView() tableView.setModel(model) tableView.horizontalHeader().setResizeMode(QHeaderView.Stretch) tableView.verticalHeader().setResizeMode(QHeaderView.Stretch) chart = QChart() chart.setAnimationOptions(QChart.AllAnimations) # Series 1. series = QLineSeries() series.setName("Line 1") mapper = QVXYModelMapper(self) mapper.setXColumn(0) mapper.setYColumn(1) mapper.setSeries(series) mapper.setModel(model) chart.addSeries(series) # Get the color of the series and use it for showing the mapped area. seriesColorHex = '#' + hex(series.pen().color().rgb()).upper()[-6:] model.addMapping(seriesColorHex, QRect(0, 0, 2, model.rowCount())) # Series 2. series = QLineSeries() series.setName("Line 2") mapper = QVXYModelMapper(self) mapper.setXColumn(2) mapper.setYColumn(3) mapper.setSeries(series) mapper.setModel(model) chart.addSeries(series) # Get the color of the series and use it for showing the mapped area. seriesColorHex = '#' + hex(series.pen().color().rgb()).upper()[-6:] model.addMapping(seriesColorHex, QRect(2, 0, 2, model.rowCount())) chart.createDefaultAxes() chartView = QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) chartView.setMinimumSize(640, 480) # Create the main layout. mainLayout = QGridLayout() mainLayout.addWidget(tableView, 1, 0) mainLayout.addWidget(chartView, 1, 1) mainLayout.setColumnStretch(1, 1) mainLayout.setColumnStretch(0, 0) self.setLayout(mainLayout)
def __init__(self, parent=None): super(TableWidget, self).__init__(parent) # Create a simple model for storing data. model = CustomTableModel() # Create the table view and add the model to it. tableView = QTableView() tableView.setModel(model) tableView.setMinimumWidth(300) tableView.horizontalHeader().setResizeMode(QHeaderView.Stretch) tableView.verticalHeader().setResizeMode(QHeaderView.Stretch) chart = QChart() chart.setAnimationOptions(QChart.AllAnimations) # Series 1. series = QBarSeries() first = 3 count = 5 mapper = QVBarModelMapper(self) mapper.setFirstBarSetColumn(1) mapper.setLastBarSetColumn(4) mapper.setFirstRow(first) mapper.setRowCount(count) mapper.setSeries(series) mapper.setModel(model) chart.addSeries(series) # Get the color of the series and use it for showing the mapped area. for i, barset in enumerate(series.barSets()): seriesColorHex = '#' + hex( barset.brush().color().rgb()).upper()[-6:] model.addMapping(seriesColorHex, QRect(1 + i, first, 1, barset.count())) categories = ["April", "May", "June", "July", "August"] axis = QBarCategoriesAxis(chart) axis.append(categories) chart.createDefaultAxes() chart.setAxisX(axis, series) chartView = QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) chartView.setMinimumSize(640, 480) # Create the main layout. mainLayout = QGridLayout() mainLayout.addWidget(tableView, 1, 0) mainLayout.addWidget(chartView, 1, 1) mainLayout.setColumnStretch(1, 1) mainLayout.setColumnStretch(0, 0) self.setLayout(mainLayout)
def createAreaChart(self): chart = QChart() #chart.axisX().setNiceNumbersEnabled(True) #chart.axisY().setNiceNumbersEnabled(True) 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 updateUI(self): theme = self.m_themeComboBox.itemData( self.m_themeComboBox.currentIndex()) if self.m_charts[0].chart().theme() != theme: for chartView in self.m_charts: chartView.chart().setTheme(theme) pal = self.window().palette() if theme == QChart.ChartThemeLight: pal.setColor(QPalette.Window, QColor(0xf0f0f0)) pal.setColor(QPalette.WindowText, QColor(0x404044)) elif theme == QChart.ChartThemeDark: pal.setColor(QPalette.Window, QColor(0x121218)) pal.setColor(QPalette.WindowText, QColor(0xd6d6d6)) elif theme == QChart.ChartThemeBlueCerulean: pal.setColor(QPalette.Window, QColor(0x40434a)) pal.setColor(QPalette.WindowText, QColor(0xd6d6d6)) elif theme == QChart.ChartThemeBrownSand: pal.setColor(QPalette.Window, QColor(0x9e8965)) pal.setColor(QPalette.WindowText, QColor(0x404044)) elif theme == QChart.ChartThemeBlueNcs: pal.setColor(QPalette.Window, QColor(0x018bba)) pal.setColor(QPalette.WindowText, QColor(0x404044)) elif theme == QChart.ChartThemeHighContrast: pal.setColor(QPalette.Window, QColor(0xffab03)) pal.setColor(QPalette.WindowText, QColor(0x181818)) elif theme == QChart.ChartThemeBlueIcy: pal.setColor(QPalette.Window, QColor(0xcee7f0)) pal.setColor(QPalette.WindowText, QColor(0x404044)) else: pal.setColor(QPalette.Window, QColor(0xf0f0f0)) pal.setColor(QPalette.WindowText, QColor(0x404044)) self.window().setPalette(pal) checked = self.m_antialiasCheckBox.isChecked() for chartView in self.m_charts: chartView.setRenderHint(QPainter.Antialiasing, checked) options = QChart.AnimationOptions( self.m_animatedComboBox.itemData( self.m_animatedComboBox.currentIndex())) if self.m_charts[0].chart().animationOptions() != options: for chartView in self.m_charts: chartView.chart().setAnimationOptions(options) alignment = self.m_legendComboBox.itemData( self.m_legendComboBox.currentIndex()) for chartView in self.m_charts: legend = chartView.chart().legend() if alignment == 0: legend.hide() else: legend.setAlignment(Qt.Alignment(alignment)) legend.show()
def createScatterChart(self): chart = QChart() #chart.axisX().setNiceNumbersEnabled(True) #chart.axisY().setNiceNumbersEnabled(True) chart.setTitle("Scatter chart") for i, data_list in enumerate(self.m_dataTable): series = QScatterSeries(chart) for value, _ in data_list: series.append(value) series.setName("Series " + str(i)) chart.addSeries(series) chart.createDefaultAxes() return chart
def createBarChart(self, valueCount): chart = QChart() #chart.axisX().setNiceNumbersEnabled(True) #chart.axisY().setNiceNumbersEnabled(True) chart.setTitle("Bar chart") series = QStackedBarSeries(chart) for i, data_list in enumerate(self.m_dataTable): set = QBarSet("Bar set " + str(i)) for value, _ in data_list: set << value.y() series.append(set) chart.addSeries(series) chart.createDefaultAxes() return chart
def createPieChart(self): chart = QChart() chart.setTitle("Pie chart") pieSize = 1.0 / len(self.m_dataTable) for i, data_list in enumerate(self.m_dataTable): series = QPieSeries(chart) for value, label in data_list: slice = series.append(label, value.y()) if len(series) == 1: slice.setLabelVisible() slice.setExploded() hPos = (pieSize / 2) + (i / float(len(self.m_dataTable))) series.setPieSize(pieSize) series.setHorizontalPosition(hPos) series.setVerticalPosition(0.5) chart.addSeries(series) return chart
set4 = QBarSet("Samantha") set0 << 1 << 2 << 3 << 4 << 5 << 6 set1 << 5 << 0 << 0 << 4 << 0 << 7 set2 << 3 << 5 << 8 << 13 << 8 << 5 set3 << 5 << 6 << 7 << 3 << 4 << 5 set4 << 9 << 7 << 5 << 3 << 1 << 2 series = QBarSeries() series.append(set0) series.append(set1) series.append(set2) series.append(set3) series.append(set4) chart = QChart() chart.addSeries(series) chart.setTitle("Simple barchart example") chart.createDefaultAxes() categories = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] axis = QBarCategoriesAxis() axis.append(categories) chart.setAxisX(axis, series) chart.legend().setVisible(True) chart.legend().setAlignment(Qt.AlignBottom) chartView = QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing)
series1 << QPointF(1, 3) << QPointF(3, 4) << QPointF(7, 3) << QPointF(8, 2) \ << QPointF(12, 3) << QPointF(16, 4) << QPointF(18, 3) series = QAreaSeries(series0, series1) series.setName("Batman") pen = QPen(0x059605) pen.setWidth(3) series.setPen(pen) gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1)) gradient.setColorAt(0.0, QColor(0x3cc63c)) gradient.setColorAt(1.0, QColor(0x26f626)) gradient.setCoordinateMode(QGradient.ObjectBoundingMode) series.setBrush(gradient) chart = QChart() chart.addSeries(series) chart.setTitle("Simple areachart example") chart.createDefaultAxes() chart.axisX().setRange(0, 20) chart.axisY().setRange(0, 10) chartView = QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) window = QMainWindow() window.setCentralWidget(chartView) window.resize(400, 300) window.show() sys.exit(app.exec_())