def Paint(self):
        scene = QGraphicsScene()

        # Draw the graph
        tt = self.ui.graphtype.currentIndex()
        if tt == 0:
            points = self.avgSpeed
        elif tt == 1:
            points = self.avgVolume
        elif tt == 2:
            points = self.avgCapacity
        elif tt == 3:
            points = self.avgRam
        p0 = points[0]
        for p in points[1:]:
            scene.addLine(5 + p0[0] * 2, 205 - p0[1] * 2, 5 + p[0] * 2, 205 - p[1] * 2, QPen(self.settings["graph"]))
            p0 = p

        # Draw the axis
        scene.addLine(5, 5, 5, 208, QPen(self.settings["axis"]))
        scene.addLine(2, 205, self.time * 2 + 5, 205, QPen(self.settings["axis"]))
        t = 0
        while t <= self.time:
            scene.addLine(5 + t * 2, 206, 5 + t * 2, 204, QPen(self.settings["axis"]))
            font = QFont()
            font.setPointSize(6)       
            capt = scene.addText(str(t), font)
            capt.setPos(t * 2, 203)
            t += 10
        self.ui.graph.setScene(scene)
Beispiel #2
0
    def Paint(self):
        scene = QGraphicsScene()

        # Draw the graph
        tt = self.ui.graphtype.currentIndex()
        if tt == 0:
            points = self.avgSpeed
        elif tt == 1:
            points = self.avgVolume
        elif tt == 2:
            points = self.avgCapacity
        elif tt == 3:
            points = self.avgRam
        p0 = points[0]
        for p in points[1:]:
            scene.addLine(5 + p0[0] * 2, 205 - p0[1] * 2, 5 + p[0] * 2,
                          205 - p[1] * 2, QPen(self.settings["graph"]))
            p0 = p

        # Draw the axis
        scene.addLine(5, 5, 5, 208, QPen(self.settings["axis"]))
        scene.addLine(2, 205, self.time * 2 + 5, 205,
                      QPen(self.settings["axis"]))
        t = 0
        while t <= self.time:
            scene.addLine(5 + t * 2, 206, 5 + t * 2, 204,
                          QPen(self.settings["axis"]))
            font = QFont()
            font.setPointSize(6)
            capt = scene.addText(str(t), font)
            capt.setPos(t * 2, 203)
            t += 10
        self.ui.graph.setScene(scene)
Beispiel #3
0
    def test(self):
        if not self.winManager:
            return
        from PyQt4.QtGui import QGraphicsScene, QGraphicsItem, QGraphicsLineItem
        from PyQt4.QtCore import QRectF, QLineF
        w = self.winManager.newWindow()
        scene = QGraphicsScene(w.graphicsView)
        scene.addItem(Items.Grid())
        scene.addItem(Items.Axes())

        line = scene.addLine(QLineF(0, 0, 0, 0))

        cross = Items.NodeCross(movable=True)
        cross.addEdge(line, 1)
        scene.addItem(cross)

        help = scene.addText(QCoreApplication.translate('Graphics', 'Press "h" for help!'))
        help.moveBy(-50, 80)

        text = Items.NodeText(QCoreApplication.translate('Graphics', 'Drag Me!'))
        text.setFlag(QGraphicsItem.ItemIsMovable, True)
        text.setFlag(QGraphicsItem.ItemIsSelectable, True)
        text.addEdge(line, 2)
        scene.addItem(text)
        w.graphicsView.setScene(scene)
Beispiel #4
0
 def __init__(self, *args):
     scene = QGraphicsScene(args[0])
     scene.setSceneRect(0,0,600.0,SCENE_HEIGHT)
     QGraphicsView.__init__(self, scene, *args)
     
     scene = self.scene()
     self.yAxis = scene.addLine(PADDING, PADDING, PADDING, scene.height() - PADDING)
     self.xAxis = scene.addLine(PADDING, scene.height() - PADDING, scene.width() - PADDING, scene.height() - PADDING)
     
     self.bars = []
     self.barLabels = []
     self.xLabels = []
     self.yLabels = []
     self.values = []
     
     self.show()
     self.raise_()
Beispiel #5
0
class Plotter(QObject):

	def __init__(self, dimensions, main_title, x_title, y_title):
		QObject.__init__(self)

		self.dimensions = dimensions
		self.scene = QGraphicsScene()

		self.main_title = TextItem(main_title, self.scene, self.dimensions, main_title_transform)
		self.x_title = TextItem(x_title, self.scene, self.dimensions, x_title_transform)
		self.y_title = TextItem(y_title, self.scene, self.dimensions, y_title_transform)

		if config.debug.plotter.show_margin_boxes:
			self.debug_margin_boxes = []
			dimensions.changed.connect(self.show_margin_boxes)
			self.show_margin_boxes()

	def show_margin_boxes(self):
		for rect in self.debug_margin_boxes:
			self.scene.removeItem(rect)
		r = []
		r.append(self.scene.addRect(0,0, self.dimensions.left_margin, self.dimensions.height,
				red, red_t))
		r.append(self.scene.addRect(0,0, self.dimensions.width, self.dimensions.top_margin,
				green, green_t))
		r.append(self.scene.addRect(0, self.dimensions.top_margin + self.dimensions.grid_height,
				self.dimensions.width, self.dimensions.bottom_margin,
				blue, blue_t))
		r.append(self.scene.addRect(self.dimensions.width, self.dimensions.height,
				-self.dimensions.right_margin, -self.dimensions.height,
				cyan, cyan_t))
		halfway_height = self.dimensions.top_margin + self.dimensions.grid_height/2
		r.append(self.scene.addLine(0, halfway_height,
				self.dimensions.width, halfway_height,
				QPen(black, 0)))
		halfway_width = self.dimensions.left_margin + self.dimensions.grid_width/2
		r.append(self.scene.addLine(halfway_width, 0,
				halfway_width, self.dimensions.height,
				QPen(black, 0)))
		self.debug_margin_boxes = r
Beispiel #6
0
    def Paint(self):
        scene = QGraphicsScene()
        hor = self.ui.horizontal.currentIndex()
        vert = self.ui.vertical.currentIndex()
        v = {"a": [], "d": [], "c": [], "r": [], "f": []}
        h = {"a": [], "d": [], "c": [], "r": [], "f": []}
        for alg in self.algs:
            projects = []
            if hor == 0:
                projects = sorted(self.stats[alg].values(),key=lambda x: 1.0 / 3.0 * (x["computersload"] + x["storesload"] + x["ramload"]))
            elif hor == 1:
                projects = sorted(self.stats[alg].values(),key=lambda x: 0.5*(x["computersload"]+x["ramload"]))
            elif hor == 2:
                projects = sorted(self.stats[alg].values(),key=lambda x: x["computersload"])
            elif hor == 3:
                projects = sorted(self.stats[alg].values(),key=lambda x: x["ramload"])
            elif hor == 4:
                projects = sorted(self.stats[alg].values(),key=lambda x: x["storesload"])
            if projects == []:
                return
            for proj in projects:
                if vert == 0:
                    v[alg].append(proj["assigned"])
                elif vert == 1:
                    v[alg].append(proj["ratio"])
                elif vert == 2:
                    v[alg].append(proj["replicas"])
                if hor == 0:
                    h[alg].append(1.0 / 3.0 * (proj["computersload"] + proj["storesload"] + proj["ramload"]))
                elif hor == 1:
                    h[alg].append(0.5 * (proj["computersload"] + proj["ramload"]))
                elif hor == 2:
                    h[alg].append(proj["computersload"])
                elif hor == 3:
                    h[alg].append(proj["ramload"])
                elif hor == 4:
                    h[alg].append(proj["storesload"])

        maxnum = max([max(v[i]) for i in self.algs] + [1])
        scene.addLine(5, 5, 5, 213, QPen(self.settings["axis"]))
        scene.addLine(2, 210, 210, 210, QPen(self.settings["axis"]))
        for i in range(10):
            scene.addLine(5 + (i + 1) * 20, 209, 5 + (i + 1) * 20, 211, QPen(self.settings["axis"]))
            scene.addLine(4, 210 - (i + 1) * 20, 6, 210 - (i + 1) * 20, QPen(self.settings["axis"]))
            font = QFont()
            font.setPointSize(6)       
            t1 = scene.addText(str(0.1*(i + 1)), font)
            t1.setPos((i + 1) * 20, 212)
            if int(0.1*maxnum*(i + 1)) != 0:
                t2 = scene.addText(str(int(0.1*maxnum*(i + 1))), font)
                t2.setPos(-10, 200 - (i + 1) * 20)

        legendy = 10
        for alg in self.algs:
            x0 = h[alg][0]
            y0 = v[alg][0]
            color = QColor(random.randint(1, 255), random.randint(1, 255), random.randint(1, 255))
            brush = QBrush(color)
            color = QPen(color)
            for x,y in zip(h[alg],v[alg]):
                scene.addLine(5 + x0 * 200, 210 - float(y0)/maxnum * 200, 5 + x * 200, 210 - float(y)/maxnum * 200, color)
                scene.addLine(5 + x * 200 - 2, 210 - float(y)/maxnum * 200 - 2 , 5 + x * 200 + 2, 210 - float(y)/maxnum * 200 + 2, color)
                scene.addLine(5 + x * 200 + 2, 210 - float(y)/maxnum * 200 - 2, 5 + x * 200 - 2, 210 - float(y)/maxnum * 200 + 2, color)
                x0 = x
                y0 = y
            scene.addRect(220, legendy, 5, 5, color, brush)
            t = scene.addText(algnames[alg], font)
            t.setPos(230, legendy-5)
            legendy += 10
        self.ui.graph.setScene(scene)
Beispiel #7
0
class ModuleAWidget(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        self.ui = Ui_ModuleA()
        self.ui.setupUi(self)

        self.timer = QTimer()
        QObject.connect(self.timer, SIGNAL("timeout()"), self.read_inputs)

        self.data = 200 * [0.0]

    def read_inputs(self):
        r = self.dev.read()
        u = r[1] / 1023.0 * 3.3
        self.dev.pwm(1, int(u * 65536.0 / 3.3))
        self.ui.labelU.setText('%0.3f V' % u)
        self.ui.progressU.setValue(1000 * u)
        self.data.pop(0)
        self.data.append(u)

        self.scene = QGraphicsScene()
        self.scene.addLine(-10, 400 - 0, 610, 400 - 0)
        self.scene.addLine(0, 400 + 10, 0, 400 - 410)
        self.scene.addLine(-10, 400 - 50, 10, 400 - 50)
        self.scene.addLine(-10, 400 - 100, 10, 400 - 100)
        self.scene.addLine(-10, 400 - 150, 10, 400 - 150)
        self.scene.addLine(-10, 400 - 200, 10, 400 - 200)
        self.scene.addLine(-10, 400 - 250, 10, 400 - 250)
        self.scene.addLine(-10, 400 - 300, 10, 400 - 300)
        self.scene.addLine(-10, 400 - 350, 10, 400 - 350)
        self.scene.addLine(-10, 400 - 400, 10, 400 - 400)
        self.scene.addSimpleText('4.0').moveBy(-40, 0 - 10)
        self.scene.addSimpleText('3.5').moveBy(-40, 50 - 10)
        self.scene.addSimpleText('3.0').moveBy(-40, 100 - 10)
        self.scene.addSimpleText('2.5').moveBy(-40, 150 - 10)
        self.scene.addSimpleText('2.0').moveBy(-40, 200 - 10)
        self.scene.addSimpleText('1.5').moveBy(-40, 250 - 10)
        self.scene.addSimpleText('1.0').moveBy(-40, 300 - 10)
        self.scene.addSimpleText('0.5').moveBy(-40, 350 - 10)
        self.scene.addSimpleText('0.0').moveBy(-40, 400 - 10)
        self.scene.addSimpleText('[U/V]').moveBy(-39, 430 - 10)
        path = QPainterPath()
        path.moveTo(0, 400 - self.data[0] * 100)
        for i in xrange(1, 200):
            path.lineTo(3 * (i + 1), 400 - self.data[i] * 100)
        self.scene.addPath(path, QPen(QColor(0, 0, 255), 3))
        self.ui.graphU.setScene(self.scene)
Beispiel #8
0
class ElevationScene(object):
    def __init__(self, dialog, view):
        self.dialog = dialog
        self.view = view
        self.scene = None
        self.line = None
        self.path = None
        self.zone = None
        self.pts = {}
        self.y_delta = {
            PT1: 0.,
            PT2: 0.
        }
        self.fresnel_visible = False
        self.frequency = 2400

    @staticmethod
    def path_for(points):
        path = QPainterPath(points[0])
        for point in points[1:]:
            path.lineTo(point)
        path.lineTo(points[-1].x(), 0)
        path.lineTo(points[0].x(), 0)
        path.lineTo(points[0])
        return path

    @staticmethod
    def overlay_for(pt1, pt2, frequency):
        # Construct the line-geometry, we'll use this to construct the ellipsoid
        line = QLineF(pt1, pt2)

        # Determine the radius for the ellipsoid
        radius = fresnel_radius(line.length(), frequency)

        # Draw the ellipsoid
        zone = QPainterPath()
        zone.addEllipse(QPointF(0., 0.), line.length() / 2, radius)

        # Rotate the ellipsoid - same angle as the line
        transform = QTransform()
        transform.rotate(-line.angle())
        zone = transform.map(zone)

        # Center the zone over the line
        lc = QRectF(pt1, pt2).center()
        zc = zone.boundingRect().center()
        zone.translate(lc.x() - zc.x(), lc.y() - zc.y())

        return line, zone

    def initialize(self, points, show_fresnel, frequency):
        self.pts = {
            PT1: points[0],
            PT2: points[-1]
        }
        self.fresnel_visible = show_fresnel
        self.frequency = frequency

        # Construct static geometry to be included in the scene
        path = self.path_for(points)

        height = path.boundingRect().height()
        gradient = QLinearGradient(QPointF(0., height), QPointF(0., 0.))
        gradient.setColorAt(0, QColor(0x00b300))
        gradient.setColorAt(1, QColor(0x331a00))

        # Create the scene
        self.scene = QGraphicsScene(self.dialog)

        # Add geometries to the scene, keeping a reference to each
        self.path = self.scene.addPath(path, QPen(Qt.blue, 1), QBrush(gradient))

        # Update the scene; i.e. correct pen-colours etc.
        self.update_scene(add_geometries=True)

        # Set up the view with the constructed scene
        self.view.setScene(self.scene)
        self.view.ensureVisible(self.scene.sceneRect())
        self.view.scale(1., -1.)

    def update_scene(self, add_geometries=False):
        # Get new geometries
        line, zone = self.overlay_for(
            self.pts[PT1] + QPointF(0., self.y_delta[PT1]),
            self.pts[PT2] + QPointF(0., self.y_delta[PT2]),
            self.frequency
        )

        # And update the line geometry - this shall be reflected in the scene
        if add_geometries:
            self.line = self.scene.addLine(line)
            self.zone = self.scene.addPath(zone)
        else:
            self.line.setLine(line)
            self.zone.setPath(zone)

        # Colour the line & zone as appropriate
        for item in (self.line, self.zone):
            item.setPen(RPEN if item.collidesWithItem(self.path) else GPEN)

        # Show/hide the fresnel zone as requested
        self.zone.setVisible(self.fresnel_visible)

    def zoom_event(self, pos, delta):
        # Save the scene pos
        old_pos = self.view.mapToScene(pos)

        # Zoom
        zoom_factor = ZOOM_IN_FACTOR if delta > 0 else ZOOM_OUT_FACTOR
        self.view.scale(zoom_factor, zoom_factor)

        # Translate scene such that zoom appears to center on mouse pointer pos
        new_pos = self.view.mapToScene(pos)
        delta = new_pos - old_pos
        self.view.translate(delta.x(), delta.y())

    def slider_event(self, point, value):
        self.y_delta[point] = value
        self.update_scene()

    def fresnel_event(self, show_fresnel, value):
        self.fresnel_visible = show_fresnel
        self.frequency = value
        self.update_scene()
    def Paint(self):
        scene = QGraphicsScene()
        scene.setBackgroundBrush(Qt.transparent)
        scene.addLine(5, 5, 5, 213, QPen(self.settings["axis"]))
        scene.addLine(2, 210, 210, 210, QPen(self.settings["axis"]))
        mod_num = int(self.ui.moduleNum.currentText())
        max_sim = max(self.points_sim, key=lambda x: x[mod_num])[mod_num]
        max_mm = max(self.points_mm, key=lambda x: x[mod_num])[mod_num]
        max_time = max(max_mm, max_sim)

        for i in range(10):
            scene.addLine(4, 210 - (i + 1) * 20, 6, 210 - (i + 1) * 20, QPen(self.settings["axis"]))
            font = QFont()
            font.setPointSize(6)
            if int(0.1*max_time*(i + 1)) != 0:
                t2 = scene.addText(str(int(0.1*max_time*(i + 1))), font)
                t2.setPos(-18, 200 - (i + 1) * 20)

        i = 1
        x0 = 5 + 200 / self.num
        y0 = 210 - float(self.points_mm[0][mod_num]) / max_time * 200
        for p in self.points_mm:
            x = 5 + i * 200 / self.num
            y = 210 - float(p[mod_num])/max_time * 200
            scene.addLine(x0, y0, x, y, QPen(self.settings["mm"]))
            scene.addLine(x - 2, y - 2, x + 2, y + 2, QPen(self.settings["mm"]))
            scene.addLine(x + 2, y - 2, x - 2, y + 2, QPen(self.settings["mm"]))
            x0 = x
            y0 = y
            i += 1
        i = 1
        x0 = 5 + 200 / self.num
        y0 = 210 - float(self.points_sim[0][mod_num]) / max_time * 200
        for p in self.points_sim:
            x = 5 + i * 200 / self.num
            y = 210 - float(p[mod_num])/max_time * 200
            scene.addLine(x0, y0, x, y, QPen(self.settings["sim"]))
            scene.addLine(x - 2, y - 2, x + 2, y + 2, QPen(self.settings["sim"]))
            scene.addLine(x + 2, y - 2, x - 2, y + 2, QPen(self.settings["sim"]))
            x0 = x
            y0 = y
            i += 1
        self.ui.graph.setScene(scene)

        self.ui.table.setRowCount(len(self.simplesystems))
        self.simplesystems.sort(key = lambda x: x.simrel)
        for i in range(len(self.simplesystems)):
            self.ui.table.setItem(i, 0, QTableWidgetItem(self.simplesystems[i].id))
        self.simplesystems.sort(key = lambda x: x.mmrel)
        for i in range(len(self.simplesystems)):
            self.ui.table.setItem(i, 1, QTableWidgetItem(self.simplesystems[i].id))
            if self.ui.table.item(i, 0).text() != self.ui.table.item(i, 1).text():
                self.ui.table.item(i, 0).setForeground(QBrush(QColor(255,0,0)))
                self.ui.table.item(i, 1).setForeground(QBrush(QColor(255,0,0)))
            else:
                self.ui.table.item(i, 0).setForeground(QBrush(QColor(0,255,0)))
                self.ui.table.item(i, 1).setForeground(QBrush(QColor(0,255,0)))
        self.simplesystems.sort(key = lambda x: x.rel)
        for i in range(len(self.simplesystems)):
            self.ui.table.setItem(i, 2, QTableWidgetItem(self.simplesystems[i].id))
Beispiel #10
0
class ModuleAWidget(QWidget):

    def __init__(self):
        QWidget.__init__(self)
        self.ui = Ui_ModuleA()
        self.ui.setupUi(self)

        self.timer = QTimer()
        QObject.connect(self.timer, SIGNAL("timeout()"), self.read_inputs)

        self.data = 200*[0.0]

    def read_inputs(self):
        r = self.dev.read()
        u = r[1]/1023.0 * 3.3
        self.dev.pwm(1, int(u*65536.0/3.3))
        self.ui.labelU.setText('%0.3f V' % u)
        self.ui.progressU.setValue(1000*u)
        self.data.pop(0)
        self.data.append(u)

        self.scene = QGraphicsScene()
        self.scene.addLine(-10, 400-0, 610, 400-0)
        self.scene.addLine(0, 400+10, 0, 400-410)
        self.scene.addLine(-10, 400- 50, 10, 400- 50)
        self.scene.addLine(-10, 400-100, 10, 400-100)
        self.scene.addLine(-10, 400-150, 10, 400-150)
        self.scene.addLine(-10, 400-200, 10, 400-200)
        self.scene.addLine(-10, 400-250, 10, 400-250)
        self.scene.addLine(-10, 400-300, 10, 400-300)
        self.scene.addLine(-10, 400-350, 10, 400-350)
        self.scene.addLine(-10, 400-400, 10, 400-400)
        self.scene.addSimpleText('4.0').moveBy(-40,   0-10)
        self.scene.addSimpleText('3.5').moveBy(-40,  50-10)
        self.scene.addSimpleText('3.0').moveBy(-40, 100-10)
        self.scene.addSimpleText('2.5').moveBy(-40, 150-10)
        self.scene.addSimpleText('2.0').moveBy(-40, 200-10)
        self.scene.addSimpleText('1.5').moveBy(-40, 250-10)
        self.scene.addSimpleText('1.0').moveBy(-40, 300-10)
        self.scene.addSimpleText('0.5').moveBy(-40, 350-10)
        self.scene.addSimpleText('0.0').moveBy(-40, 400-10)
        self.scene.addSimpleText('[U/V]').moveBy(-39, 430-10)
        path = QPainterPath()
        path.moveTo(0,400-self.data[0]*100)
        for i in xrange(1,200):
            path.lineTo(3*(i+1), 400-self.data[i]*100)
        self.scene.addPath(path, QPen(QColor(0,0,255), 3))
        self.ui.graphU.setScene(self.scene)
Beispiel #11
0
    def Paint(self):
        scene = QGraphicsScene()
        hor = self.ui.horizontal.currentIndex()
        vert = self.ui.vertical.currentIndex()
        v = {"a": [], "d": [], "c": [], "r": [], "f": []}
        h = {"a": [], "d": [], "c": [], "r": [], "f": []}
        for alg in self.algs:
            projects = []
            if hor == 0:
                projects = sorted(self.stats[alg].values(),key=lambda x: 1.0 / 3.0 * (x["computersload"] + x["storesload"] + x["ramload"]))
            elif hor == 1:
                projects = sorted(self.stats[alg].values(),key=lambda x: 0.5*(x["computersload"]+x["ramload"]))
            elif hor == 2:
                projects = sorted(self.stats[alg].values(),key=lambda x: x["computersload"])
            elif hor == 3:
                projects = sorted(self.stats[alg].values(),key=lambda x: x["ramload"])
            elif hor == 4:
                projects = sorted(self.stats[alg].values(),key=lambda x: x["storesload"])
            if projects == []:
                return
            for proj in projects:
                if vert == 0:
                    v[alg].append(proj["assigned"])
                elif vert == 1:
                    v[alg].append(proj["ratio"])
                elif vert == 2:
                    v[alg].append(proj["replicas"])
                if hor == 0:
                    h[alg].append(1.0 / 3.0 * (proj["computersload"] + proj["storesload"] + proj["ramload"]))
                elif hor == 1:
                    h[alg].append(0.5 * (proj["computersload"] + proj["ramload"]))
                elif hor == 2:
                    h[alg].append(proj["computersload"])
                elif hor == 3:
                    h[alg].append(proj["ramload"])
                elif hor == 4:
                    h[alg].append(proj["storesload"])

        maxnum = max([max(v[i]) for i in self.algs] + [1])
        scene.addLine(5, 5, 5, 213, QPen(self.settings["axis"]))
        scene.addLine(2, 210, 210, 210, QPen(self.settings["axis"]))
        for i in range(10):
            scene.addLine(5 + (i + 1) * 20, 209, 5 + (i + 1) * 20, 211, QPen(self.settings["axis"]))
            scene.addLine(4, 210 - (i + 1) * 20, 6, 210 - (i + 1) * 20, QPen(self.settings["axis"]))
            font = QFont()
            font.setPointSize(6)       
            t1 = scene.addText(str(0.1*(i + 1)), font)
            t1.setPos((i + 1) * 20, 212)
            if int(0.1*maxnum*(i + 1)) != 0:
                t2 = scene.addText(str(int(0.1*maxnum*(i + 1))), font)
                t2.setPos(-10, 200 - (i + 1) * 20)

        legendy = 10
        for alg in self.algs:
            x0 = h[alg][0]
            y0 = v[alg][0]
            color = QColor(random.randint(1, 255), random.randint(1, 255), random.randint(1, 255))
            brush = QBrush(color)
            color = QPen(color)
            for x,y in zip(h[alg],v[alg]):
                scene.addLine(5 + x0 * 200, 210 - float(y0)/maxnum * 200, 5 + x * 200, 210 - float(y)/maxnum * 200, color)
                scene.addLine(5 + x * 200 - 2, 210 - float(y)/maxnum * 200 - 2 , 5 + x * 200 + 2, 210 - float(y)/maxnum * 200 + 2, color)
                scene.addLine(5 + x * 200 + 2, 210 - float(y)/maxnum * 200 - 2, 5 + x * 200 - 2, 210 - float(y)/maxnum * 200 + 2, color)
                x0 = x
                y0 = y
            scene.addRect(220, legendy, 5, 5, color, brush)
            t = scene.addText(algnames[alg], font)
            t.setPos(230, legendy-5)
            legendy += 10
        self.ui.graph.setScene(scene)