def __init__(self): QMainWindow.__init__(self) self.series = QtCharts.QPieSeries() self.series.append('Jane', 1) self.series.append('Joe', 2) self.series.append('Andy', 3) self.series.append('Barbara', 4) self.series.append('Axel', 5) self.slice = self.series.slices()[1] self.slice.setExploded() self.slice.setLabelVisible() self.slice.setPen(QPen(Qt.darkGreen, 2)) self.slice.setBrush(Qt.green) self.chart = QtCharts.QChart() self.chart.addSeries(self.series) self.chart.setTitle('Simple piechart example') self.chart.legend().hide() self.chartView = QtCharts.QChartView(self.chart) self.chartView.setRenderHint(QPainter.Antialiasing) self.setCentralWidget(self.chartView)
def updatePieChart(self): #Remove data from pie chart. self.chart.removeSeries(self.series) #Creates new pie chart data -> series. self.series = QtCharts.QPieSeries() self.series.append("Benign", self.benignFlows) item = self.series.append("DoS", self.DoS) item.setBrush(QtGui.QColor("salmon")) item = self.series.append("DDoS", self.DDoS) item.setBrush(QtGui.QColor("blue")) item = self.series.append("SSH", self.SSH) item.setBrush(QtGui.QColor(0, 255, 255)) item = self.series.append("FTP", self.FTP) item.setBrush(QtGui.QColor(255, 0, 255)) #Adds slice. slice = QtCharts.QPieSlice() slice = self.series.slices()[0] slice.setExploded(True) slice.setLabelVisible(True) slice.setPen(QtGui.QPen(QtCore.Qt.darkGreen, 2)) slice.setBrush(QtCore.Qt.green) #Adds data to pie chart. self.chart.addSeries(self.series)
def add_series(self, name, columns): # Create QLineSeries self.series = QtCharts.QLineSeries() self.series.setName(name) # Filling QLineSeries for i in range(len(self.model)): # Getting the data x, y,_,_ = self.model[i][0] self.series.append(int(x), int(y)) self.chart.addSeries(self.series) self.chart.legend().setVisible(False) # Setting X-axis self.axis_x = QtCharts.QValueAxis() self.axis_x.setTickCount(len(self.model)) self.axis_x.setTitleText("hour") self.axis_x.setLabelFormat("%d:00") self.chart.addAxis(self.axis_x, Qt.AlignBottom) self.series.attachAxis(self.axis_x) # Setting Y-axis self.axis_y = QtCharts.QValueAxis() self.axis_y.setTickCount(1.0) self.axis_y.setLabelFormat("%.1f") self.axis_y.setTitleText("temperature") self.chart.addAxis(self.axis_y, Qt.AlignLeft) self.series.attachAxis(self.axis_y)
def __init__(self, title: str = None, parent: QtWidgets.QWidget = None): super().__init__(QtCharts.QChart(), theme=light_theme, parent=parent) self.setMinimumSize(QtCore.QSize(640, 320)) self.setRenderHint(QtGui.QPainter.Antialiasing) if title is not None: self.chart().setTitle(title) self.chart().legend().hide() self._xaxis = QtCharts.QValueAxis() # Alignment axis self._xaxis.setVisible(False) self.xaxis = QtCharts.QValueAxis() # Value axis self.xaxis.setGridLineVisible(False) self.yaxis = QtCharts.QValueAxis() self.yaxis.setGridLineVisible(False) self.yaxis.setLabelFormat("%d") self.addAxis(self._xaxis, QtCore.Qt.AlignBottom) self.addAxis(self.xaxis, QtCore.Qt.AlignBottom) self.addAxis(self.yaxis, QtCore.Qt.AlignLeft) self.series = QtCharts.QBarSeries() self.series.setBarWidth(1.0) self.chart().addSeries(self.series) self.series.attachAxis(self._xaxis) self.series.attachAxis(self.yaxis)
def __init__(self, parent: Optional[QtWidgets.QWidget] = None, flags: Qt.WindowFlags = Qt.Widget): """Initialise a new instance of the class.""" super().__init__(parent, flags) self.chart_view = QtCharts.QChartView() self.chart_view.setRenderHint(QtGui.QPainter.Antialiasing) chart: QtCharts.QChart = self.chart_view.chart() chart.legend().setLabelColor(QtGui.QColor("#F0F0F0")) chart.setAnimationDuration(500) chart.setAnimationEasingCurve(QtCore.QEasingCurve.Linear) chart.setAnimationOptions(QtCharts.QChart.NoAnimation) chart.setBackgroundBrush(QtGui.QColor("transparent")) chart.setBackgroundRoundness(0.0) chart.setContentsMargins(-7, -7, -7, -7) chart.setMargins(QtCore.QMargins(10, 0, 10, 10)) self.chart: QtCharts.QChart = chart layout = QtWidgets.QVBoxLayout() layout.setMargin(0) layout.addWidget(self.chart_view) self.setLayout(layout) x_axis = QtCharts.QValueAxis() x_axis.setRange(-CHART_DURATION, 0.0) y_axis = QtCharts.QValueAxis() self.chart.addAxis(x_axis, QtCore.Qt.AlignBottom) self.chart.addAxis(y_axis, QtCore.Qt.AlignLeft) self._style_axes() self._largest_y_value: float = 0.0 self._smallest_y_value: float = sys.float_info.max self.__x_axis_maximum: float = 0.0
def __createChartWithValues(self, dataframe: pd.DataFrame, attributes: Set[int], timeIndex: int, timeIndexType: Type) -> QtCharts.QChart: chart = QtCharts.QChart() # Sort by time timeIndexName: str = dataframe.columns[timeIndex] filteredDf = dataframe.iloc[:, [timeIndex, *attributes]].sort_values( by=timeIndexName, axis=0, ascending=True) # filteredDf has timeIndex at position 0, attributes following # Drop nan labels filteredDf.dropna(axis=0, inplace=True, subset=[timeIndexName]) # Create X axis timeSeries: pd.Series = filteredDf.iloc[:, 0] xAxis = self.__createTimeAxis(timeSeries, timeIndexType) chart.addAxis(xAxis, Qt.AlignBottom) # Create the Y axis yAxis = QtCharts.QValueAxis(chart) yAxis.setTitleText('Values') chart.addAxis(yAxis, Qt.AlignLeft) series: List[QtCharts.QLineSeries] series, yMin, yMax = self.__createSeriesForAttributes( filteredDf, timeIndex=0, timeIndexType=timeIndexType) # Set range to show every point in chart yAxis.setRange(yMin, yMax) for s in series: chart.addSeries(s) s.attachAxis(xAxis) s.attachAxis(yAxis) return chart
def initUI(self): self.lineSeries = QtCharts.QLineSeries() # legend name # self.lineSeries.setName("trend") self.lineSeries.append(QtCore.QPoint(0, 0)) pen = QtGui.QPen(QtCore.Qt.red, 6, QtCore.Qt.SolidLine) self.lineSeries.setPen(pen) self.chart = QtCharts.QChart() self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations) self.chart.setTitle("Airfoil contour analysis") self.chart.addSeries(self.lineSeries) self.chart.legend().setVisible(False) self.chart.legend().setAlignment(QtCore.Qt.AlignBottom) self.axisX = QtCharts.QValueAxis() self.axisY = QtCharts.QValueAxis() self.chart.setAxisX(self.axisX, self.lineSeries) self.chart.setAxisY(self.axisY, self.lineSeries) self.chartView = QtCharts.QChartView(self.chart) self.chartView.setRenderHint(QtGui.QPainter.Antialiasing) vlayout = QtWidgets.QVBoxLayout() vlayout.addWidget(self.chartView) self.setLayout(vlayout)
def plot_data(self): # Get table information series = QtCharts.QLineSeries() for i in range(self.table.rowCount()): text = float(self.table.item(i, 0).text()) number = float(self.table.item(i, 1).text()) series.append(text, number) chart = QtCharts.QChart() chart.addSeries(series) #chart.legend().setAlignment(Qt.AlignLeft) axis_x = QtCharts.QValueAxis() axis_x.setTickCount(10) axis_x.setLabelFormat("%.2f") axis_x.setTitleText("Step") chart.addAxis(axis_x, Qt.AlignBottom) series.attachAxis(axis_x) axis_y = QtCharts.QValueAxis() axis_y.setTickCount(10) axis_y.setLabelFormat("%.2f") axis_y.setTitleText("v_ntot") chart.addAxis(axis_y, Qt.AlignLeft) series.attachAxis(axis_y) self.chart_view.setChart(chart)
def copyAxis(chart: QtCharts.QChart, axis: QtCharts.QAbstractAxis) -> QtCharts.QAbstractAxis: a_copy: QtCharts.QAbstractAxis if axis.type() == QtCharts.QAbstractAxis.AxisTypeBarCategory: a_copy = QtCharts.QBarCategoryAxis(chart) labels = axis.categories() a_copy.append(labels) elif axis.type() == QtCharts.QAbstractAxis.AxisTypeCategory: a_copy = QtCharts.QCategoryAxis(chart) labels = axis.categoriesLabels() a_copy.setStartValue(axis.startValue(labels[0])) a_copy.setLabelsPosition(axis.labelsPosition()) for lab in labels: a_copy.append(lab, axis.endValue(lab)) elif axis.type() == QtCharts.QAbstractAxis.AxisTypeValue: a_copy = QtCharts.QValueAxis(chart) a_copy.setMin(axis.min()) a_copy.setMax(axis.max()) a_copy.setTickCount(axis.tickCount()) a_copy.setMinorTickCount(axis.minorTickCount()) a_copy.setTickInterval(axis.tickInterval()) elif axis.type() == QtCharts.QAbstractAxis.AxisTypeDateTime: a_copy = QtCharts.QDateTimeAxis(chart) a_copy.setMin(axis.min()) a_copy.setMax(axis.max()) a_copy.setFormat(axis.format()) a_copy.setTickCount(axis.tickCount()) else: raise NotImplementedError('Cannot copy axis of type {}'.format( str(axis.type()))) a_copy.setTitleText(axis.titleText()) a_copy.setTitleFont(axis.titleFont()) return a_copy
def __init__(self, parent=None): super().__init__() self.toolbar = QToolBar() self.view = qtc.QChartView() #self.view.setRenderHint(QPainter.Antialiasing) self.chart = qtc.QChart() self.reader = FsaReader() # build toolbar self.dye_menu = QMenu() self.dye_btn = QPushButton("Dye") self.dye_btn.setIcon(FIcon(0xf755)) self.dye_btn.setFlat(True) self.dye_btn.setMenu(self.dye_menu) self.toolbar.addWidget(self.dye_btn) self.toolbar.addAction(FIcon(0xf293), "rescale", self.chart.zoomReset) self.toolbar.addAction(FIcon(0xf6ec), "Zoom in", self.chart.zoomIn) self.toolbar.addAction(FIcon(0xf6eb), "Zoom out", self.chart.zoomOut) self.toolbar.addAction(FIcon(0xf01a), "configure", self._on_adjust_clicked) main_layout = QVBoxLayout() main_layout.addWidget(self.toolbar) main_layout.addWidget(self.view) self.setLayout(main_layout) # configure view self.view.setRubberBand(qtc.QChartView.RectangleRubberBand)
def _set_returns_chart(self, asset_universe: List[str], implied_returns: pd.Series) -> None: implied_returns = implied_returns.reindex(asset_universe) bar_series = QtCharts.QBarSeries() bar_set = QtCharts.QBarSet("Returns") bar_set.append(implied_returns.mul(100).values.tolist()) bar_series.append(bar_set) # configure basic chart chart = QtCharts.QChart() chart.setTitle("Market Implied Expected Returns") title_font = QtGui.QFont() title_font.setBold(True) chart.setFont(title_font) chart.addSeries(bar_series) # configure the x axis axis_x = QtCharts.QBarCategoryAxis() axis_x.append([s.replace(" ", "<br>") for s in asset_universe]) chart.createDefaultAxes() chart.setAxisX(axis_x) # configure the y axis y_min = implied_returns.min() * 100 y_max = implied_returns.max() * 100 axis_y = QtCharts.QValueAxis() self._set_y_axis_limits(y_max, y_min, axis_y, 2) axis_y.setLabelFormat("%.0f") axis_y.setTitleText("Expected Return (%pa)") chart.setAxisY(axis_y) bar_series.attachAxis(axis_y) self._returns_chart_view.setChart(chart)
def generateUnitCharts(self): self.alliedAircraft = [d.allied_units.aircraft_count for d in self.game.game_stats.data_per_turn] self.enemyAircraft = [d.enemy_units.aircraft_count for d in self.game.game_stats.data_per_turn] self.alliedAircraftSerie = QtCharts.QLineSeries() self.alliedAircraftSerie.setName("Allied aircraft count") for a, i in enumerate(self.alliedAircraft): self.alliedAircraftSerie.append(QPoint(a, i)) self.enemyAircraftSerie = QtCharts.QLineSeries() self.enemyAircraftSerie.setColor(Qt.red) self.enemyAircraftSerie.setName("Enemy aircraft count") for a, i in enumerate(self.enemyAircraft): self.enemyAircraftSerie.append(QPoint(a, i)) self.chart = QtCharts.QChart() self.chart.addSeries(self.alliedAircraftSerie) self.chart.addSeries(self.enemyAircraftSerie) self.chart.setTitle("Aircraft forces over time") self.chart.createDefaultAxes() self.chart.axisX().setRange(0, len(self.alliedAircraft)) self.chart.axisY().setRange(0, max(max(self.alliedAircraft), max(self.enemyAircraft)) + 10) self.chartView = QtCharts.QChartView(self.chart) self.chartView.setRenderHint(QPainter.Antialiasing) self.layout.addWidget(self.chartView, 0, 0)
def add_series(self, name, columns): self.series = QtCharts.QLineSeries() self.series.setName(name) for i in range(self.model.rowCount()): t = self.model.index(i, 0).data() date_fmt = "yyyy-MM-dd HH:mm:ss.zzz" x = QDateTime().fromString(t, date_fmt).toSecsSinceEpoch() y = float(self.model.index(i, 1).data()) if x > 0 and y > 0: self.series.append(x, y) self.chart.addSeries(self.series) self.axis_x = QtCharts.QDateTimeAxis() self.axis_x.setTickCount(10) self.axis_x.setFormat("dd.MM (h:mm)") self.axis_x.setTitleText("Date") self.chart.addAxis(self.axis_x, Qt.AlignBottom) self.series.attachAxis(self.axis_x) self.axis_y = QtCharts.QValueAxis() self.axis_y.setTickCount(10) self.axis_y.setLabelFormat("%.2f") self.axis_y.setTitleText("Magnitude") self.chart.addAxis(self.axis_y, Qt.AlignLeft) self.series.attachAxis(self.axis_y) self.model.color = "{}".format(self.series.pen().color().name()) print(self.model.color)
def get_performace_chart(): # Graph is based on data of: # 'Total consumption of energy increased by 10 per cent in 2010' # Statistics Finland, 13 December 2011 # http://www.stat.fi/til/ekul/2010/ekul_2010_2011-12-13_tie_001_en.html series1 = QtCharts.QPieSeries() series1.setName("Business Logic") series1.append("User Input", 353295) series1.append("Card Processing", 188500) series1.append("Others", 148680) series2 = QtCharts.QPieSeries() series2.setName("Communications") series2.append("Payment ", 319663) series2.append("Reversal", 45875) series2.append("Advice", 1060) series2.append("DCC", 111060) series3 = QtCharts.QPieSeries() series3.setName("Printing") series3.append("Merchant Receipt", 238789) series3.append("Customer Receipt", 37802) donut_breakdown = DonutBreakdownChart() donut_breakdown.setAnimationOptions(QtCharts.QChart.AllAnimations) donut_breakdown.setTitle("Total Transaction time") donut_breakdown.legend().setAlignment(Qt.AlignRight) donut_breakdown.add_breakdown_series(series1, Qt.red) donut_breakdown.add_breakdown_series(series2, Qt.darkGreen) donut_breakdown.add_breakdown_series(series3, Qt.darkBlue) chart_view = QtCharts.QChartView(donut_breakdown) chart_view.setRenderHint(QPainter.Antialiasing) return chart_view
def __init__(self, data): QWidget.__init__(self) self.model = CustomTableModel(data) self.table_view = QTableView() self.table_view.setModel(self.model) self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.table_view.verticalHeader().setSectionResizeMode(QHeaderView.Stretch) self.table_view.setMinimumSize(400, 600) self.chart = QtCharts.QChart() self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations) self.init_data() self.chart.createDefaultAxes() self.chart_view = QtCharts.QChartView(self.chart) self.chart_view.setRenderHint(QPainter.Antialiasing) self.chart_view.setMinimumSize(800, 600) # create main layout self.main_layout = QGridLayout() self.main_layout.addWidget(self.table_view, 1, 0) self.main_layout.addWidget(self.chart_view, 1, 1) self.main_layout.setColumnStretch(1, 2) self.main_layout.setColumnStretch(0, 1) self.setLayout(self.main_layout)
def __init__(self, device): super(MainWindow, self).__init__() self.series = QtCharts.QLineSeries() self.chart = QtCharts.QChart() self.chart.addSeries(self.series) self.axisX = QtCharts.QValueAxis() self.axisX.setRange(0, sampleCount) self.axisX.setLabelFormat("%g") self.axisX.setTitleText("Samples") self.axisY = QtCharts.QValueAxis() self.axisY.setRange(-1, 1) self.axisY.setTitleText("Audio level") self.chart.setAxisX(self.axisX, self.series) self.chart.setAxisY(self.axisY, self.series) self.chart.legend().hide() self.chart.setTitle("Data from the microphone ({})".format(device.deviceName())) formatAudio = QAudioFormat() formatAudio.setSampleRate(8000) formatAudio.setChannelCount(1) formatAudio.setSampleSize(8) formatAudio.setCodec("audio/pcm") formatAudio.setByteOrder(QAudioFormat.LittleEndian) formatAudio.setSampleType(QAudioFormat.UnSignedInt) self.audioInput = QAudioInput(device, formatAudio, self) self.ioDevice = self.audioInput.start() self.ioDevice.readyRead.connect(self._readyRead) self.chartView = QtCharts.QChartView(self.chart) self.setCentralWidget(self.chartView) self.buffer = [QPointF(x, 0) for x in range(sampleCount)] self.series.append(self.buffer)
def __init__(self, nseries=1, series_names=None): super().__init__() if nseries < 1: raise ValueError( 'The number of serieses must be larger than zero.') self.nseries = nseries self.series_names = series_names layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout) self.setMinimumHeight(110) self.setMinimumWidth(400) self.serieses = [QtCharts.QLineSeries() for _ in range(self.nseries)] self.chart = QtCharts.QChart() if self.series_names is None: self.chart.legend().hide() for idx, series in enumerate(self.serieses): self.chart.addSeries(series) if self.series_names is not None: series.setName(self.series_names[idx]) self.chart.createDefaultAxes() self.chart.layout().setContentsMargins(0, 0, 0, 0) # self.chart.setTheme(QChart.ChartThemeDark) self.chart.axisY().setTickCount(3) chart_view = QtCharts.QChartView(self.chart) chart_view.setRenderHint(QPainter.Antialiasing) layout.addWidget(chart_view) self.x_max = 2 self.y_pts = list()
def initUI(self): layout = QVBoxLayout() # Initialize chart chart = QtCharts.QChart() lineSeries = QtCharts.QLineSeries() # Make some random data points dataSeries = [(i + 1, randint(0, 99999)) for i in range(200)] # load data into chart: for point in dataSeries: lineSeries.append(point[0], point[1]) # Add Some Chart Options chart.addSeries(lineSeries) chart.setTitle("Random Numbers from 0-9000") chart.createDefaultAxes() # Create a container (similar to a widget) chartView = QtCharts.QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) # Some Chart Styling lineSeries.setColor(QtGui.QColor("darkgray")) chartView.chart().setBackgroundBrush(QtGui.QColor("ivory")) layout.addWidget(chartView) self.setLayout(layout)
def __init_color_calibration_widget(self, parent=None): self.__color_calibration_widget = QGroupBox("Color Correction Options", parent) self.__color_calibration_widget.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) color_calibration_layout = QVBoxLayout(self.__color_calibration_widget) chart_widget = QWidget(self.__color_calibration_widget) chart_layout = QGridLayout(chart_widget) self.data_fit_chart = QtCharts.QChart() self.data_fit_chart_view = QtCharts.QChartView(self.data_fit_chart) self.axis_x = QtCharts.QValueAxis() self.axis_x.setTitleText("Pixel Intensity") self.axis_x.setRange(0, 1) self.data_fit_chart.addAxis(self.axis_x, Qt.AlignBottom) self.axis_y = QtCharts.QValueAxis() self.axis_y.setTitleText("Voxel Height (\u03BCm)") self.axis_y.setRange(0, 10) self.data_fit_chart.addAxis(self.axis_y, Qt.AlignLeft) chart_layout.addWidget(self.data_fit_chart_view, 0, 0, 1, 4) chart_widget.setLayout(chart_layout) buttons_widget = QWidget(self.__color_calibration_widget) buttons_layout = QHBoxLayout(buttons_widget) analyze_data_button = QPushButton("Analyze Data") analyze_data_button.clicked.connect(self.analyze_images) self.parameters_estimation_label = QLabel(f'Estimated parameters: \u03B1 = {self.dlp_color_calibrator.optimized_parameters[0]:.3f}, \u03B2 = {self.dlp_color_calibrator.optimized_parameters[1]:.3f}, \u03B3 = {self.dlp_color_calibrator.optimized_parameters[2]:.3f}', buttons_widget) buttons_layout.addWidget(analyze_data_button) buttons_layout.addWidget(self.parameters_estimation_label) buttons_widget.setLayout(buttons_layout) color_calibration_layout.addWidget(chart_widget) color_calibration_layout.addWidget(buttons_widget) self.__color_calibration_widget.setLayout(color_calibration_layout)
def __init__(self, frame): self.series = QtCharts.QLineSeries() self.series.setColor(Qt.red) self.axis_x = QtCharts.QDateTimeAxis() # Number of items to display self.axis_x.setTickCount(int(common.SETTINGS["DataCacheSize"])) self.axis_x.setFormat("hh:mm:ss:z") # Date format self.axis_x.setTitleText("Time") self.axis_y = QtCharts.QValueAxis() self.axis_y.setTitleText("Value") self.chart = QtCharts.QChart() self.chart.setTitle("") self.chart.addSeries(self.series) self.chart.addAxis(self.axis_x, QtCore.Qt.AlignBottom) self.chart.addAxis(self.axis_y, QtCore.Qt.AlignLeft) self.series.attachAxis(self.axis_x) self.series.attachAxis(self.axis_y) self.chart_view = QtCharts.QChartView(self.chart) self.layout = QVBoxLayout() self.layout.addWidget(self.chart_view) self.frame = frame self.frame.setLayout(self.layout)
def create_piechart(self): #Creates pie chart data. self.series = QtCharts.QPieSeries() self.series.append("DoS", 0) self.series.append("DDoS", 0) self.series.append("Benign", 0) self.series.append("SSH", 0) self.series.append("FTP", 0) #Adds slice. slice = QtCharts.QPieSlice() slice = self.series.slices()[2] slice.setExploded(True) slice.setLabelVisible(True) slice.setPen(QtGui.QPen(QtCore.Qt.darkGreen, 2)) slice.setBrush(QtCore.Qt.green) #Create chart. self.chart = QtCharts.QChart() self.chart.legend().hide() self.chart.addSeries(self.series) self.chart.createDefaultAxes() self.chart.setTitle("Attacks Pie Chart") #Adds legend. self.chart.legend().setVisible(True) self.chart.legend().setAlignment(QtCore.Qt.AlignBottom) self.chart.setBackgroundVisible(False) #Render pie chart. chartview = QtCharts.QChartView(self.chart) chartview.setRenderHint(QtGui.QPainter.Antialiasing) return chartview
def __init__(self, parent=None): QWidget.__init__(self, parent) self.series = QtCharts.QLineSeries() self.series.setName("Karma points") self.task_list = None self.max_bound: datetime = datetime.datetime.now() self.interval = 7 self.karma_point = 0 self.chart = QtCharts.QChart() self.chart.legend().setVisible(True) self.chart.legend().setAlignment(Qt.AlignBottom) self.chart.addSeries(self.series) self.chart.setTitle("Karma Points") self.chart.setAnimationOptions(QtCharts.QChart.SeriesAnimations) self.axisX = QtCharts.QDateTimeAxis() self.axisX.setFormat("dd MMM") self.axisX.setTickCount(self.interval) self.axisY = QtCharts.QValueAxis() self.chart.setAxisX(self.axisX, self.series) self.chart.setAxisY(self.axisY, self.series) self.chartView = QtCharts.QChartView(self.chart) self.chartView.setRenderHint(QPainter.Antialiasing) self.main_layout = QVBoxLayout(self) self.main_layout.addWidget(self.chartView) self.setLayout(self.main_layout) self.setFixedSize(651, 421)
def createPieChart(data): chart = QtCharts.QChart() # chart.legend().hide() chart.setTitle("Pie chart (refugees as of 2017)") series = QtCharts.QPieSeries() sliceList = list( map(lambda nv: QtCharts.QPieSlice(nv[0], nv[1]), zip(data[0], data[1]))) series.append(sliceList) for s in series.slices(): s.setLabelVisible() chart = QtCharts.QChart() chart.addSeries(series) chart.setTitle("Simple piechart example") # chart.legend()->hide(); chartView = QtCharts.QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) return chartView
def createBarCharts(self, x, y1, y2): barSet1 = QtCharts.QBarSet("Magnitude") # c1 = PySide2.QtWidgets.QColorDialog.getColor() barSet1.setColor(Qt.white) barSet1.append(y1) barSet2 = QtCharts.QBarSet("Depths") barSet2.setColor(Qt.magenta) barSet2.append(y2) barSeries1 = QtCharts.QBarSeries() barSeries1.append(barSet1) barSeries1.append(barSet2) barChart1 = QtCharts.QChart() barChart1.addSeries(barSeries1) barChart1.setTitle("my first bar chart") barChart1.setAnimationOptions(QtCharts.QChart.SeriesAnimations) categories = x barCategoryAxis = QtCharts.QBarCategoryAxis() barCategoryAxis.append(categories) barChart1.createDefaultAxes() barChart1.setAxisX(barCategoryAxis, barSeries1) barChart1.legend().setVisible(True) barChart1.legend().setAlignment(Qt.AlignTop) return barChart1
def createScatterChart(data): chart = QtCharts.QChart() # chart.legend().hide() chart.setTitle("Spline chart (market shares)") series0 = QtCharts.QScatterSeries() series0.setName("height / weight") series0.setMarkerShape(QtCharts.QScatterSeries.MarkerShapeCircle) series0.setMarkerSize(5.0) #series0.append([0, 6, 6, 4]) pointsList = list( map(lambda hw: QPointF(hw[0], hw[1]), zip(data[0], data[1]))) series0.append(pointsList) chartView = QtCharts.QChartView(chart) chartView.setRenderHint(QPainter.Antialiasing) chart.addSeries(series0) chart.setTitle("Nba Players active as of 2018 height/weight") chart.createDefaultAxes() chart.setDropShadowEnabled(False) chart.axes(Qt.Vertical)[0].setTitleText("Weight") chart.axes(Qt.Horizontal)[0].setTitleText("Height") return chartView
def create_areachart(self): chart = QtCharts.QChart() chart.setTitle("Area Chart") # The lower series initialized to zero values lower_series = None name = "Series " for i in range(len(self.data_table)): upper_series = QtCharts.QLineSeries(chart) for j in range(len(self.data_table[i])): data = self.data_table[i][j] if lower_series: points = lower_series.pointsVector() y_value = points[i].y() + data[0].y() upper_series.append(QPointF(j, y_value)) else: upper_series.append(QPointF(j, data[0].y())) area = QtCharts.QAreaSeries(upper_series, lower_series) area.setName("{}{}".format(name, i)) chart.addSeries(area) lower_series = upper_series chart.createDefaultAxes() chart.axisX().setRange(0, self.value_count - 1) chart.axisY().setRange(0, self.value_max) # Add space to label to add space between labels and axis chart.axisY().setLabelFormat("%.1f ") return chart
def __init__(self, parent=None, f=None, *args, **kwargs): QtWidgets.QWidget.__init__(self) self.maxSize = 31 # 只存储最新的31个数据 self.maxX = 300 self.maxY = 100 self.data = [] #折线 self.splineSeries = QtCharts.QSplineSeries() #离散点 self.scatterSeries = QtCharts.QScatterSeries() self.scatterSeries.setMarkerSize(8) self.chart = QtCharts.QChart() self.chart.addSeries(self.splineSeries) self.chart.addSeries(self.scatterSeries) self.chart.legend().hide() self.chart.setTitle("实时动态曲线") self.chart.createDefaultAxes() self.chart.axisX().setRange(0, self.maxX) self.chart.axisY().setRange(0, self.maxY) self.chartView = QtCharts.QChartView(self.chart) #self.chartView.setRenderHint(QtGui.QPainter.Antialiasing) layout = QtWidgets.QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self.chartView) self.setLayout(layout) self.thread=None
def __init__(self): QMainWindow.__init__(self) self.series = QtCharts.QLineSeries() self.series.append(0, 6) self.series.append(2, 4) self.series.append(3, 8) self.series.append(7, 4) self.series.append(10, 5) self.series.append(QPointF(11, 1)) self.series.append(QPointF(13, 3)) self.series.append(QPointF(17, 6)) self.series.append(QPointF(18, 3)) self.series.append(QPointF(20, 2)) self.chart = QtCharts.QChart() self.chart.legend().hide() self.chart.addSeries(self.series) self.chart.createDefaultAxes() self.chart.setTitle("Simple line chart example") self.chartView = QtCharts.QChartView(self.chart) self.chartView.setRenderHint(QPainter.Antialiasing) self.setCentralWidget(self.chartView)
def __createChartWithIndexes(self, dataframe: pd.DataFrame, attributes: Set[int], indexes: List[Any], timeIndex: int, timeIndexType: Type, indexMean: bool = False) -> QtCharts.QChart: """ Creates a chart with a series for every 'index' in 'dataframe' showing only column specified in 'attributes' :param attributes: the position of the columns to consider to create series :param indexes: the indexes of the dataframe to use :param timeIndex: the index of the column in 'dataframe' which should be considered the time axis :param timeIndexType: the type of column specified in 'timeIndex'. Can be Ordinal or Datetime :param indexMean: ignored for now """ columns = dataframe.columns timeIndexName: str = columns[timeIndex] # Get the subset of attribute columns and selected indexes filteredDf = dataframe.loc[indexes, columns[[timeIndex, *attributes]]] \ .dropna(axis=0, subset=[timeIndexName]) filteredDf = filteredDf.sort_values(by=timeIndexName, axis=0, ascending=True) # Group rows by their index attribute. Every index has a distinct list of values dfByIndex = filteredDf.groupby(filteredDf.index) timeAxisColumn: pd.Series = list(dfByIndex)[0][1][timeIndexName] chart = QtCharts.QChart() # There will be 1 time axis for all the series, so it is created based on the first series # This function is passed the original time label (either Ordinal or Datetime) xAxis = self.__createTimeAxis(timeAxisColumn, timeIndexType) chart.addAxis(xAxis, Qt.AlignBottom) # Create the Y axis yAxis = QtCharts.QValueAxis() yAxis.setTitleText('Values') # Add axis Y to chart chart.addAxis(yAxis, Qt.AlignLeft) # Add every index series groupedValues: pd.DataFrame # timeValue, timeAttribute, *seriesValue for group, groupedValues in dfByIndex: # Create a series for this 'index' groupName: str = str(group) allSeries: List[QtCharts.QLineSeries] allSeries, yMin, yMax = self.__createSeriesForAttributes( groupedValues, 0, timeIndexType=timeIndexType) yAxis.setRange(yMin, yMax) for series in allSeries: chart.addSeries(series) series.attachAxis(xAxis) series.attachAxis(yAxis) if len(allSeries) == 1: # Only 1 attribute was selected, so assume we have multiple indexes (groups) allSeries[0].setName(groupName) return chart
def add_series( self, name, columns, chart ): #выходит add.series так написан что по Ох автоматически будет дата? """ Формирует название оси """ self.series = QtCharts.QLineSeries() self.series.setName(name) """ формирует 1 массив series из 2 столбцов, добавляя в него данные из Х и У """ for i in range(self.model.rowCount()): """ получение даты """ t = self.model.index(i, 0).data( ) #типа нулевой столбец(дата) и в нем по строкам будем переходить с помощью цикла этого date_fmt = "yyyy-MM-dd HH:mm:ss.zzz" #но вообще тут уже прописано как бы что в нулевом столбце будет дата #x = QDateTime().fromString(t, date_fmt).toSecsSinceEpoch() x = float(QDateTime().fromString(t, date_fmt).toMSecsSinceEpoch()) #x = QDateTime().fromString("2019-01-01 12:00:00.100", date_fmt).toMSecsSinceEpoch() # не работает: # QLineSeries.append(x, y) ждёт float-ов, а не QDateTime() # x = QDateTime().fromString(t, date_fmt) y = float(self.model.index(i, columns[1]).data()) # print(x, y) # потому что сложно рисовать график с минусовой осью ??? if x > 0 and y > 0: self.series.append(x, y) chart.addSeries(self.series) """ задание оси X """ #self.axis_x = QtCharts.QDateTimeAxis() self.axis_x = QtCharts.QValueAxis() """ Класс QDateTimeAxis добавляет даты и время к оси диаграммы. """ self.axis_x.setTickCount(6) """setTickCounе( int count ) устанавливает количество отметок на оси для подсчета, на оси Х будет 10 штрихов """ #self.axis_x.setFormat("dd.MM.yy hh:mm:ss") """ setFormat - задаёт формат вывод текстового представления значения. """ self.axis_x.setTitleText("Дата") chart.addAxis(self.axis_x, Qt.AlignBottom) """ Добавляет ось оси к диаграмме, выровненной, как указано выравниванием. """ self.series.attachAxis(self.axis_x) """ Возвращает, true если ось была успешно присоединена, false в противном случае. """ """ задание оси Y """ self.axis_y = QtCharts.QValueAxis() """ Класс QValueAxis добавляет значения к осям диаграммы. """ self.axis_y.setTickCount(6) """ Свойство setTickCount содержит количество отметок на оси. Это указывает, сколько линий сетки нарисовано на графике. """ self.axis_y.setLabelFormat("%.2f") """ Свойство setLabelFormat содержит формат метки оси. """ self.axis_y.setTitleText( name ) #изменила название оси, что ифами написать, как обратиться к имени той колонки которую я в параметры передаю? chart.addAxis(self.axis_y, Qt.AlignLeft) self.series.attachAxis(self.axis_y) """ получение цвета из QC hart для использования в QTableView, будет выделять столбец таблицы тем же цветом что и линия в диарамме!! """ self.model.color = "{}".format(self.series.pen().color().name())