Exemplo n.º 1
0
    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
Exemplo n.º 2
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.º 3
0
upperSeries = QtCharts.QLineSeries()
lowerSeries = QtCharts.QLineSeries()

#x = [x for x in range(1, 20, 2)]
#y1 = [5, 7, 6, 7, 5, 7, 5, 4, 7, 5]
#y2 = [3, 4, 2, 5, 3, 5, 2, 1, 4, 2]
x = [x for x in range(1, 3, 1)]
y1 = [5, 7]
y2 = [3, 4]

for i in range(len(x)):
    upperSeries.append(x[i], y1[i])
    lowerSeries.append(x[i], y2[i])

series = QtCharts.QAreaSeries(upperSeries, lowerSeries)

pen = QPen(Qt.red)
pen.setWidth(3)
series.setPen(pen)

gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1))
gradient.setColorAt(0.0, QColor(255, 255, 255))
gradient.setColorAt(1.0, QColor(0, 255, 0))
gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
series.setBrush(gradient)

chart = QtCharts.QChart()
chart.addSeries(series)
chart.setTitle('Simple Area Chart')
chart.legend().hide()
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.º 5
0
    def __init__(self,
                 parent,
                 capacity,
                 color,
                 gradient_start=None,
                 gradient_end=None,
                 speeds=(),
                 is_upload=False,
                 dp=1,
                 max_speed=0):
        self._parent = parent
        self._capacity = capacity
        self._color = color
        self._gradient_start = gradient_start if gradient_start \
            else self._color
        self._gradient_end = gradient_end if gradient_end \
            else self._color.lighter()
        self._last_max_speed = max_speed

        self._chart = QtCharts.QChart()

        self._line_series = QtCharts.QLineSeries()
        self._lower_series = QtCharts.QLineSeries()
        if len(speeds) > self._capacity:
            speeds = speeds[len(speeds) - self._capacity:]
        for i, speed in enumerate(speeds):
            self._line_series.append(i, speed)
            self._lower_series.append(i, 0)
        self._last_index = len(speeds)

        self._series = QtCharts.QAreaSeries(self._line_series,
                                            self._lower_series)
        pen = QPen(self._color)
        pen.setWidth(1)
        self._series.setPen(pen)

        self._series.lowerSeries().setColor(self._gradient_end)

        gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1))
        gradient.setColorAt(0.0, self._gradient_start)
        gradient.setColorAt(1.0, self._gradient_end)
        gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
        self._series.setBrush(gradient)

        self._chart.addSeries(self._series)
        self._chart.layout().setContentsMargins(0, 0, 0, 0)
        # make chart look bigger
        margins = [-35, -25, -35, -37]
        self._chart.setContentsMargins(*margins)
        self._chart.setBackgroundRoundness(0)

        grid_pen = QPen(QColor("#EFEFF4"))
        grid_pen.setWidth(1)

        self._chart.createDefaultAxes()
        self._chart.axisX().setLabelsVisible(False)
        # self._chart.axisY().setLabelsVisible(False)
        self._chart.axisX().setTitleVisible(False)
        # self._chart.axisY().setTitleVisible(False)
        self._chart.axisX().setGridLineVisible(True)
        self._chart.axisX().setGridLinePen(grid_pen)
        # self._chart.axisY().setGridLineVisible(False)
        # self._chart.axisY().setGridLinePen(grid_pen)
        self._chart.axisX().setLineVisible(False)
        self._chart.axisY().setLineVisible(False)
        self._chart.axisX().setRange(self._last_index - self._capacity,
                                     self._last_index - 1)
        self._set_y_range()
        self._chart.axisY().hide()
        # self._chart.setBackgroundBrush(QBrush(QColor("#EFEFF4")))

        self._view = QtCharts.QChartView(self._chart, self._parent)
        self._view.setRenderHint(QPainter.Antialiasing)
        self._view.setFixedSize(self._parent.size())
        self._view.chart().legend().hide()
        self._chart.resize(self._view.width(), self._view.height())

        text_start = ""
        self._scale_line = ScaleLine(self._chart,
                                     QColor("#777777"),
                                     QColor("black"),
                                     text_start=text_start,
                                     margins=margins,
                                     dp=dp,
                                     is_upload=is_upload)
        self._scale_line.set_line(self._last_max_speed, resize=True)