Exemplo n.º 1
0
Arquivo: drift.py Projeto: djdt/pewpew
    def __init__(self, parent: QtWidgets.QWidget = None):
        super().__init__(QtCharts.QChart(), theme=light_theme, parent=parent)
        self.setRenderHint(QtGui.QPainter.Antialiasing)

        self.chart().legend().hide()

        self.xaxis = QtCharts.QValueAxis()
        self.xaxis.setLabelFormat("%d")
        self.yaxis = QtCharts.QValueAxis()
        self.yaxis.setVisible(False)

        self.chart().addAxis(self.xaxis, QtCore.Qt.AlignBottom)
        self.chart().addAxis(self.yaxis, QtCore.Qt.AlignLeft)

        self.drift1 = QtCharts.QLineSeries()
        self.drift1.setPen(QtGui.QPen(sequential[1], 1.0))
        self.chart().addSeries(self.drift1)
        self.drift1.attachAxis(self.xaxis)
        self.drift1.attachAxis(self.yaxis)

        self.drift2 = QtCharts.QLineSeries()
        self.drift2.setPen(QtGui.QPen(sequential[1], 1.0))
        self.chart().addSeries(self.drift2)
        self.drift2.attachAxis(self.xaxis)
        self.drift2.attachAxis(self.yaxis)

        self.fit = QtCharts.QSplineSeries()
        self.fit.setPen(QtGui.QPen(sequential[2], 2.0))
        self.chart().addSeries(self.fit)
        self.fit.attachAxis(self.xaxis)
        self.fit.attachAxis(self.yaxis)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    def __init__(self, parent=None):
        super(View, self).__init__(parent)
        self.setScene(QGraphicsScene(self))

        self.setDragMode(QGraphicsView.NoDrag)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # Chart
        self._chart = QtCharts.QChart()
        self._chart.setMinimumSize(640, 480)
        self._chart.setTitle("Hover the line to show callout. Click the line "
                             "to make it stay")
        self._chart.legend().hide()
        self.series = QtCharts.QLineSeries()
        self.series.append(1, 3)
        self.series.append(4, 5)
        self.series.append(5, 4.5)
        self.series.append(7, 1)
        self.series.append(11, 2)
        self._chart.addSeries(self.series)

        self.series2 = QtCharts.QSplineSeries()
        self.series2.append(1.6, 1.4)
        self.series2.append(2.4, 3.5)
        self.series2.append(3.7, 2.5)
        self.series2.append(7, 4)
        self.series2.append(10, 2)
        self._chart.addSeries(self.series2)

        self._chart.createDefaultAxes()
        self._chart.setAcceptHoverEvents(True)

        self.setRenderHint(QPainter.Antialiasing)
        self.scene().addItem(self._chart)

        self._coordX = QGraphicsSimpleTextItem(self._chart)
        self._coordX.setPos(self._chart.size().width() / 2 - 50,
                            self._chart.size().height())
        self._coordX.setText("X: ")
        self._coordY = QGraphicsSimpleTextItem(self._chart)
        self._coordY.setPos(self._chart.size().width() / 2 + 50,
                            self._chart.size().height())
        self._coordY.setText("Y: ")

        self._callouts = []
        self._tooltip = Callout(self._chart)

        self.series.clicked.connect(self.keepCallout)
        self.series.hovered.connect(self.tooltip)

        self.series2.clicked.connect(self.keepCallout)
        self.series2.hovered.connect(self.tooltip)

        self.setMouseTracking(True)
Exemplo n.º 4
0
    def __init__(self, parent: QtWidgets.QGraphicsItem = None):
        super().__init__(parent)
        self.setMinimumSize(640, 320)

        self._xaxis = QtCharts.QValueAxis()
        self._xaxis.setVisible(False)

        self.xaxis = NiceValueAxis()
        self.xaxis.setTitleText("Size (nm)")
        self.xaxis.setGridLineVisible(False)

        self.yaxis = QtCharts.QValueAxis()
        self.yaxis.setGridLineVisible(False)
        self.yaxis.setTitleText("Count")
        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(0.9)
        self.addSeries(self.series)
        self.series.attachAxis(self._xaxis)
        self.series.attachAxis(self.yaxis)

        self.set = QtCharts.QBarSet("sizes")
        self.set.setColor(QtCore.Qt.black)
        self.set.hovered.connect(self.barHovered)
        self.series.append(self.set)

        self.fit = QtCharts.QSplineSeries()
        self.fit.setPen(QtGui.QPen(QtGui.QColor(255, 172, 0), 2.0))
        self.addSeries(self.fit)
        self.fit.attachAxis(self.xaxis)
        self.fit.attachAxis(self.yaxis)

        self.label_fit = QtWidgets.QGraphicsTextItem(self)
        self.label_fit.setFont(QtGui.QFont("sans", 12, italic=False))
        self.label_fit.setZValue(99)
        self.label_fit.setDefaultTextColor(QtGui.QColor(255, 172, 0))
        self.xaxis.rangeChanged.connect(self.updateFitLabelPos)

        self.label_hovered = QtWidgets.QGraphicsTextItem(self)
        self.plotAreaChanged.connect(self.updateHoveredLabelPos)

        self.vlines: List[QtCharts.QLineSeries] = []

        # Clean legend
        self.legend().setMarkerShape(QtCharts.QLegend.MarkerShapeFromSeries)
        self.legend().markers(self.series)[0].setVisible(False)
Exemplo n.º 5
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self.legend().setAlignment(QtCore.Qt.AlignLeft)
        self.legend().setContentsMargins(0.0, 0.0, 100.0, 0.0)
        self.legend().setMarkerShape(QtCharts.QLegend.MarkerShapeCircle)

        self.axisX = QtCharts.QValueAxis()
        self.axisY = QtCharts.QValueAxis()

        self.axisX.setVisible(False)

        self.x = 0
        self.y = 0

        self.timer = QtCore.QTimer()
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.onTimeout)

        self.percent = cpu_percent(percpu=True)

        for i in range(cpu_count()):
            core_series = QtCharts.QSplineSeries()
            core_series.setName(f"CPU {i + 1}: {self.percent[i]: .1f} %")

            colour = [
                random.randrange(0, 255),
                random.randrange(0, 255),
                random.randrange(0, 255)
            ]

            pen = QtGui.QPen(QtGui.QColor(colour[0], colour[1], colour[2]))
            pen.setWidth(1)

            core_series.setPen(pen)
            core_series.append(self.x, self.y)

            self.addSeries(core_series)

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

        for i in self.series():
            i.attachAxis(self.axisX)
            i.attachAxis(self.axisY)

        self.axisX.setRange(0, 100)
        self.axisY.setTickCount(5)
        self.axisY.setRange(0, 100)

        self.timer.start()
Exemplo n.º 6
0
    def createSplineChart(self):
        chart = QtCharts.QChart()
        chart.setTitle("Spline chart")
        name = "Series "
        for i, lst in enumerate(self.data_table):
            series = QtCharts.QSplineSeries(chart)
            for data in lst:
                series.append(data[0])
            series.setName("{}{}".format(name, i))
            chart.addSeries(series)

        chart.createDefaultAxes()
        chart.axisX().setRange(0, self.value_max)
        chart.axisY().setRange(0, self.value_count)
        # Add space to label to add space between labels and axis
        chart.axisY().setLabelFormat("%.1f  ")

        return chart
Exemplo n.º 7
0
    def __init__(self, parent: Optional[QtWidgets.QWidget] = None):
        """Initialise a new instance of the class."""
        super().__init__(parent)

        self.setWindowTitle("Midpoint Prices")

        self.instrument_series: List[QtCharts.QSplineSeries] = [
            QtCharts.QSplineSeries() for _ in Instrument
        ]
        for i, line_series in enumerate(self.instrument_series):
            line_series.setName(Instrument(i).name)
            self.chart.addSeries(line_series)
            line_series.attachAxis(self.chart.axisX())
            line_series.attachAxis(self.chart.axisY())
            line_series.setColor(self._COLOURS[i])

        self.__last_price: Optional[float] = None
        self.__timer = QtCore.QTimer(self)
        self.__timer.timeout.connect(self.__on_timer_tick)
Exemplo n.º 8
0
    def __init__(self):
        super(LineGraphicsPlot, self).__init__()
        self.DataSeries = QtCharts.QSplineSeries()
        self.Area = QtCharts.QAreaSeries(self.DataSeries)
        self.Area.setBrush(QBrush(QColor(200,100,224,40)))



        #self.addSeries(self.DataSeries)
        self.addSeries(self.Area)

        self.AxisX = QtCharts.QValueAxis()
        self.AxisY = QtCharts.QValueAxis()
        self.addAxis(self.AxisX,QtCore.Qt.AlignBottom)
        self.addAxis(self.AxisY,QtCore.Qt.AlignLeft)
        #self.DataSeries.attachAxis(self.AxisX)
        #self.DataSeries.attachAxis(self.AxisY)

        self.Area.attachAxis(self.AxisX)
        self.Area.attachAxis(self.AxisY)

        self.AxisX.setTickCount(5)

        self.mx = 0
        self.my = 0
        self.AxisX.setRange(self.mx,self.mx + 5)
        self.AxisY.setRange(-1.2,1.2)
        self.legend().hide()
        self.axisX().hide()

        self.setTheme(QtCharts.QChart.ChartThemeDark)

        #self.setTheme(QtCharts.QChart.ChartThemeBrownSand)
        #self.setTheme(QtCharts.QChart.ChartThemeHighContrast)
        self.setPlotAreaBackgroundBrush(QBrush(QColor(200,100,14)))



        self.m_timer = QtCore.QTimer(self)
        self.m_timer.timeout.connect(self.handleTimeout)
        self.m_timer.start(25)
Exemplo n.º 9
0
    def set_benckmark(self, x, benckmark_list):
        if benckmark_list:
            # 初始化
            if self.benckmart_list is None:
                self.benckmart_list = list()
                for benckmart in benckmark_list:
                    new_widget = QtCharts.QChartView()
                    height = self.size().toTuple()[1]
                    new_widget.setFixedHeight(height / 2)
                    new_widget.chart().setTitle(benckmart[0])
                    self.layout.addWidget(new_widget)
                    color_data_series = dict()
                    self.benckmart_list.append((new_widget, color_data_series))
                    for model_result in benckmart[1:]:
                        new_data_series = QtCharts.QSplineSeries()
                        new_data_series.setPen(QPen(model_result[1]))
                        new_widget.chart().addSeries(new_data_series)
                        color_data_series[model_result[1]] = [
                            new_data_series, model_result[0]
                        ]

            # 添加点
            for benckmart, chart_view_and_data_series_set in zip(
                    benckmark_list, self.benckmart_list):
                chart_view, data_series_set = chart_view_and_data_series_set
                for model_result in benckmart[1:]:
                    data_series, avg = data_series_set[model_result[1]]
                    data_series.append(x, model_result[0])
                    # 计算平均值
                    data_series_count = data_series.count()
                    if data_series_count == 0:
                        avg = model_result[0]
                    else:
                        avg = (avg + model_result[0] / data_series_count
                               ) * data_series_count / (data_series_count + 1)
                    data_series_set[model_result[1]][1] = avg
                    data_series.setName(str(avg))
                    chart_view.chart().removeSeries(data_series)
                    chart_view.chart().addSeries(data_series)
                chart_view.chart().createDefaultAxes()
Exemplo n.º 10
0
def createAreaChart(data):
    """
    axisX = QtCharts.QDateTimeAxis();
    # axisX.setTickCount(10);
    
    axisX.setFormat("yyyy");
    #axisX.setFormat("yyyy/MM/dd hh:mm:ss:zzz");
    #axisX.setFormat("hh:mm:ss:zzz");
    
    axisX.setTitleText("Time");
    chart.addAxis(axisX, Qt.AlignBottom);

    axisY = QtCharts.QValueAxis();
    # axisY.setLabelFormat("%.2f");
    axisY.setTitleText("%");
    chart.addAxis(axisY, Qt.AlignLeft);

    # chart.axes(Qt.Vertical)[0].setRange(0, 100)
    # chart.axes(Qt.Vertical)[0].setRange(0, 3)
    """

    series0 = QtCharts.QSplineSeries()

    series0.append(QPointF(1, 5))
    series0.append(QPointF(3, 7))
    series0.append(QPointF(7, 6))
    series0.append(QPointF(9, 7))
    series0.append(QPointF(12, 6))
    series0.append(QPointF(16, 7))
    series0.append(QPointF(18, 5))

    series1 = QtCharts.QSplineSeries()

    series1.append(QPointF(1, 3))
    series1.append(QPointF(3, 4))
    series1.append(QPointF(7, 3))
    series1.append(QPointF(8, 2))
    series1.append(QPointF(12, 3))
    series1.append(QPointF(16, 4))
    series1.append(QPointF(18, 3))
    """    

    # seriesFilter = [0, 3, 4, 6]
    # seriesFilter = [0]
    seriesFilter = [0]

    valuesToDraw = [data[1][i] for i in seriesFilter]
    namesToDraw = [data[2][i] for i in seriesFilter]
  

    i = 0

    values = valuesToDraw[i]
    name = namesToDraw[i]

    topLineSeries = QtCharts.QLineSeries()    

    n = len(values)

    print(values)

     # конвертируем столбец time в float, чтобы можно было использовать его как значения оси x
    for j in range(n):
        # print(x)
        time = data[0][j]                
        topLineSeries.append(float(time.toMSecsSinceEpoch()), values[j])

    """

    #areaSeries = QtCharts.QAreaSeries(topLineSeries);
    areaSeries = QtCharts.QAreaSeries(series0, series1)
    #areaSeries.setName(name);
    areaSeries.setName("name4535343534")

    pen = QPen(0x059605)
    pen.setWidth(3)
    areaSeries.setPen(pen)

    gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1))
    gradient.setColorAt(0.0, 0x3cc63c)
    gradient.setColorAt(1.0, 0x26f626)
    gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
    areaSeries.setBrush(gradient)

    chart = QtCharts.QChart()
    chart.addSeries(areaSeries)
    # chart.legend().hide()
    chart.setTitle("Area chart (population by continents)")
    chart.createDefaultAxes()
    chart.axes(Qt.Horizontal)[0].setRange(0, 20)
    chart.axes(Qt.Vertical)[0].setRange(0, 10)

    chartView = QtCharts.QChartView(chart)
    chartView.setRenderHint(QPainter.Antialiasing)

    # areaSeries.attachAxis(axisX);
    # areaSeries.attachAxis(axisY);
    """
    for i in range(len(seriesFilter)):

        values = valuesToDraw[i]
        name = namesToDraw[i]
    
        series = QtCharts.QSplineSeries()
        series.setName(name)

        n = len(values)

        # print(values)

         # конвертируем столбец time в float, чтобы можно было использовать его как значения оси x
        for j in range(n):
            # print(x)
            time = data[0][j]                
            series.append(float(time.toMSecsSinceEpoch()), values[j])

        chart.addSeries(series)

        series.attachAxis(axisX);        
        series.attachAxis(axisY);
    
    
    
    """

    return chartView
Exemplo n.º 11
0
def createSplineChart(data):

    chart = QtCharts.QChart()
    # chart.legend().hide()
    chart.setTitle("Spline chart (market shares)")

    axisX = QtCharts.QDateTimeAxis()
    # axisX.setTickCount(10);

    axisX.setFormat("MM-yyyy")
    #axisX.setFormat("yyyy/MM/dd hh:mm:ss:zzz");
    #axisX.setFormat("hh:mm:ss:zzz");

    axisX.setTitleText("Time")
    chart.addAxis(axisX, Qt.AlignBottom)

    axisY = QtCharts.QValueAxis()
    # axisY.setLabelFormat("%.2f");
    axisY.setTitleText("%")
    chart.addAxis(axisY, Qt.AlignLeft)

    # chart.axes(Qt.Vertical)[0].setRange(0, 100)
    chart.axes(Qt.Vertical)[0].setRange(0, 3)

    # seriesFilter = [0, 3, 4, 6]
    # seriesFilter = [0]
    # seriesFilter = [3, 4, 6, 7, 9, 10]
    seriesFilter = [3, 4]

    valuesToDraw = [data[1][i] for i in seriesFilter]
    namesToDraw = [data[2][i] for i in seriesFilter]

    for i in range(len(seriesFilter)):

        values = valuesToDraw[i]
        name = namesToDraw[i]

        series = QtCharts.QSplineSeries()
        series.setName(name)

        c1 = PySide2.QtWidgets.QColorDialog.getColor(
            options=PySide2.QtWidgets.QColorDialog.DontUseNativeDialog)
        series.setColor(c1)

        n = len(values)

        # print(values)

        # конвертируем столбец time в float, чтобы можно было использовать его как значения оси x
        for j in range(n):
            # print(x)
            time = data[0][j]
            series.append(float(time.toMSecsSinceEpoch()), values[j])

        chart.addSeries(series)

        series.attachAxis(axisX)
        series.attachAxis(axisY)

    # chart.createDefaultAxes()

    chartView = QtCharts.QChartView(chart)
    chartView.setRenderHint(QPainter.Antialiasing)

    return chartView
Exemplo n.º 12
0
import sys
from PySide2 import QtCore, QtWidgets, QtGui
from PySide2.QtCharts import QtCharts

if __name__ == "__main__":
    app = QtWidgets.QApplication([])

    series = QtCharts.QSplineSeries()
    series.setName("spline")
    series.append(0, 6)
    series.append(2, 4)
    series.append(3, 8)
    series.append(7, 4)
    series.append(10, 5)

    series2 = QtCharts.QSplineSeries()
    series2.setName("spline")
    series2.append(0, 7)
    series2.append(2, 5)
    series2.append(3, 9)
    series2.append(7, 5)
    series2.append(10, 6)

    chart = QtCharts.QChart()
    chart.legend().hide()
    chart.addSeries(series)
    chart.addSeries(series2)
    chart.setTitle("Simple spline chart example")
    chart.createDefaultAxes()
    chart.axes(QtCore.Qt.Vertical)[0].setRange(0, 10)
    chartView = QtCharts.QChartView(chart)
Exemplo n.º 13
0
    def _generateChartImage(self):
        chart = QtCharts.QChart()

        chart.legend().setVisible(False)
        chart.setBackgroundBrush(QBrush(QColor("transparent")))
        chart.setMargins(QMargins(0, 0, 0, 0))
        chart.setTitleBrush(QBrush(Loader.QSSColor("@dark")))

        axis_pen = QPen(Loader.QSSColor("@dark"))
        axis_pen.setWidth(4)

        grid_line_pen = QPen(Loader.QSSColor("@light-gray"))

        labels_font = QFont(Loader.QSSVariable("@font"))
        labels_font.setPointSize(18)

        axis_x = QtCharts.QValueAxis()
        axis_y = QtCharts.QValueAxis()

        for axis in (axis_x, axis_y):
            axis.setLinePen(axis_pen)
            axis.setLabelFormat("%d")
            axis.setGridLinePen(grid_line_pen)
            axis.setLabelsFont(labels_font)

        chart.addAxis(axis_x, Qt.AlignBottom)
        chart.addAxis(axis_y, Qt.AlignLeft)
        

        current_series = {}
        max_s = 0
        for i, m in self._analysis.parameters().selectedMorphotypes().items():
            current_series[i] = QtCharts.QSplineSeries()
            current_series[i].setName(m.name())
            current_series[i].setColor(m.color())

            s = 0
            current_series[i].append(0, 0)
            for k, img in enumerate(self._analysis.processedImages()):
                s += img.detectionsCount().get(i, 0)
                current_series[i].append(k + 1, s)
            max_s = max(s, max_s)
            
            chart.addSeries(current_series[i])

            current_series[i].attachAxis(axis_x)
            current_series[i].attachAxis(axis_y)

            pen = current_series[i].pen()
            pen.setWidth(5)
            current_series[i].setPen(pen)

        chart.axisX().setRange(0, max(len(self._analysis.processedImages()), 4))
        chart.axisY().setRange(0, max(round(max_s), 4)*1.05)

        chart_view = QtCharts.QChartView(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)
        chart_view.resize(QSize(1080, 500))

        chart_pixmap = chart_view.grab()
        self._analysis.setBase64ChartImage(ImageConverter.QPixmapToBase64(chart_pixmap, "png"))