コード例 #1
0
    def __init__(self, widget, parent=None, name=None):
        OWPlot.__init__(self, parent, name, axes=[], widget=widget)
        ScaleData.__init__(self)

        self.update_antialiasing(False)

        self.widget = widget
        self.last_selected_curve = None
        self.enableGridXB(0)
        self.enableGridYL(0)
        self.domain_contingencies = None
        self.auto_update_axes = 1
        self.old_legend_keys = []
        self.selection_conditions = {}
        self.attributes = []
        self.visualized_mid_labels = []
        self.attribute_indices = []
        self.valid_data = []
        self.groups = {}
        self.colors = None

        self.selected_examples = []
        self.unselected_examples = []
        self.bottom_pixmap = QPixmap(
            gui.resource_filename("icons/upgreenarrow.png"))
        self.top_pixmap = QPixmap(
            gui.resource_filename("icons/downgreenarrow.png"))
コード例 #2
0
ファイル: owparallelgraph.py プロジェクト: 675801717/orange3
    def __init__(self, widget, parent=None, name=None):
        OWPlot.__init__(self, parent, name, axes=[], widget=widget)
        ScaleData.__init__(self)

        self.update_antialiasing(False)

        self.widget = widget
        self.last_selected_curve = None
        self.enableGridXB(0)
        self.enableGridYL(0)
        self.domain_contingencies = None
        self.auto_update_axes = 1
        self.old_legend_keys = []
        self.selection_conditions = {}
        self.attributes = []
        self.visualized_mid_labels = []
        self.attribute_indices = []
        self.valid_data = []
        self.groups = {}
        self.colors = None

        self.selected_examples = []
        self.unselected_examples = []
        self.bottom_pixmap = QPixmap(gui.resource_filename("icons/upgreenarrow.png"))
        self.top_pixmap = QPixmap(gui.resource_filename("icons/downgreenarrow.png"))
コード例 #3
0
ファイル: owparallelgraph.py プロジェクト: r0k3/orange3
    def mousePressEvent(self, e):
        canvas_position = self.mapToScene(e.pos())
        x = self.inv_transform(xBottom, canvas_position.x())
        contact, info = self.testArrowContact(int(round(x)), canvas_position.x(), canvas_position.y())

        if contact:
            self.pressed_arrow = info
        else:
            OWPlot.mousePressEvent(self, e)
コード例 #4
0
    def mousePressEvent(self, e):
        canvas_position = self.mapToScene(e.pos())
        x = self.inv_transform(xBottom, canvas_position.x())
        contact, info = self.testArrowContact(int(round(x)), canvas_position.x(), canvas_position.y())

        if contact:
            self.pressed_arrow = info
        else:
            OWPlot.mousePressEvent(self, e)
コード例 #5
0
ファイル: owparallelgraph.py プロジェクト: r0k3/orange3
 def set_data(self, data, subset_data=None, **args):
     self.start_progress()
     self.set_progress(1, 100)
     self.data = data
     self.have_data = True
     self.domain_contingencies = None
     self.groups = {}
     OWPlot.setData(self, data)
     ScaleData.set_data(self, data, subset_data, no_data=True, **args)
     self.end_progress()
コード例 #6
0
 def set_data(self, data, subset_data=None, **args):
     self.start_progress()
     self.set_progress(1, 100)
     self.data = data
     self.have_data = True
     self.domain_contingencies = None
     self.groups = {}
     OWPlot.setData(self, data)
     ScaleData.set_data(self, data, no_data=True, **args)
     self.end_progress()
コード例 #7
0
ファイル: owparallelgraph.py プロジェクト: r0k3/orange3
 def drawCanvas(self, painter):
     OWPlot.drawCanvas(self, painter)
     for i in range(
             int(max(0, math.floor(self.axisScaleDiv(xBottom).interval().minValue()))),
             int(min(len(self.attributes),
                     math.ceil(self.axisScaleDiv(xBottom).interval().maxValue()) + 1))):
         bottom, top = self.selection_conditions.get(self.attributes[i], (0, 1))
         painter.drawPixmap(self.transform(xBottom, i) - self.bottom_pixmap.width() / 2,
                            self.transform(yLeft, bottom), self.bottom_pixmap)
         painter.drawPixmap(self.transform(xBottom, i) - self.top_pixmap.width() / 2,
                            self.transform(yLeft, top) - self.top_pixmap.height(), self.top_pixmap)
コード例 #8
0
 def drawCanvas(self, painter):
     OWPlot.drawCanvas(self, painter)
     for i in range(
             int(max(0, math.floor(self.axisScaleDiv(xBottom).interval().minValue()))),
             int(min(len(self.attributes),
                     math.ceil(self.axisScaleDiv(xBottom).interval().maxValue()) + 1))):
         bottom, top = self.selection_conditions.get(self.attributes[i], (0, 1))
         painter.drawPixmap(self.transform(xBottom, i) - self.bottom_pixmap.width() / 2,
                            self.transform(yLeft, bottom), self.bottom_pixmap)
         painter.drawPixmap(self.transform(xBottom, i) - self.top_pixmap.width() / 2,
                            self.transform(yLeft, top) - self.top_pixmap.height(), self.top_pixmap)
コード例 #9
0
ファイル: owparallelgraph.py プロジェクト: r0k3/orange3
    def mouseMoveEvent(self, e):
        if hasattr(self, "pressed_arrow"):
            canvas_position = self.mapToScene(e.pos())
            y = min(1, max(0, self.inv_transform(yLeft, canvas_position.y())))
            index, pos = self.pressed_arrow
            attr = self.data_domain[self.attributes[index]]
            old_condition = self.selection_conditions.get(attr.name, [0, 1])
            old_condition[pos] = y
            self.selection_conditions[attr.name] = old_condition
            self.update_data(self.attributes, self.visualized_mid_labels)

            if isinstance(attr, ContinuousVariable):
                val = self.attr_values[attr.name][0] + old_condition[pos] * (
                    self.attr_values[attr.name][1] - self.attr_values[attr.name][0])
                strVal = attr.name + "= %.2f" % val
                QToolTip.showText(e.globalPos(), strVal)
            if self.sendSelectionOnUpdate and self.auto_send_selection_callback:
                self.auto_send_selection_callback()

        else:
            OWPlot.mouseMoveEvent(self, e)
コード例 #10
0
ファイル: owparallelgraph.py プロジェクト: mstajdohar/orange3
    def event(self, ev):
        if ev.type() == QEvent.ToolTip:
            x = self.inv_transform(xBottom, ev.pos().x())
            y = self.inv_transform(yLeft, ev.pos().y())

            canvas_position = self.mapToScene(ev.pos())
            x_float = self.inv_transform(xBottom, canvas_position.x())
            contact, (index, pos) = self.testArrowContact(int(round(x_float)), canvas_position.x(), canvas_position.y())
            if contact:
                attr = self.data_domain[self.attributes[index]]
                if isinstance(attr, ContinuousVariable):
                    condition = self.selection_conditions.get(attr.name, [0, 1])
                    val = self.attr_values[attr.name][0] + condition[pos] * (
                        self.attr_values[attr.name][1] - self.attr_values[attr.name][0]
                    )
                    str_val = attr.name + "= %%.%df" % attr.number_of_decimals % val
                    QToolTip.showText(ev.globalPos(), str_val)
            else:
                for curve in self.items():
                    if (
                        type(curve) == PolygonCurve
                        and curve.boundingRect().contains(x, y)
                        and getattr(curve, "tooltip", None)
                    ):
                        (name, value, total, dist) = curve.tooltip
                        count = sum([v[1] for v in dist])
                        if count == 0:
                            continue
                        tooltip_text = (
                            "Attribute: <b>%s</b><br>Value: <b>%s</b><br>"
                            "Total instances: <b>%i</b> (%.1f%%)<br>"
                            "Class distribution:<br>" % (name, value, count, 100.0 * count / float(total))
                        )
                        for (val, n) in dist:
                            tooltip_text += "&nbsp; &nbsp; <b>%s</b> : <b>%i</b> (%.1f%%)<br>" % (
                                val,
                                n,
                                100.0 * float(n) / float(count),
                            )
                        QToolTip.showText(ev.globalPos(), tooltip_text[:-4])

        elif ev.type() == QEvent.MouseMove:
            QToolTip.hideText()

        return OWPlot.event(self, ev)
コード例 #11
0
    def event(self, ev):
        if ev.type() == QEvent.ToolTip:
            x = self.inv_transform(xBottom, ev.pos().x())
            y = self.inv_transform(yLeft, ev.pos().y())

            canvas_position = self.mapToScene(ev.pos())
            x_float = self.inv_transform(xBottom, canvas_position.x())
            contact, (index,
                      pos) = self.testArrowContact(int(round(x_float)),
                                                   canvas_position.x(),
                                                   canvas_position.y())
            if contact:
                attr = self.data_domain[self.attributes[index]]
                if attr.is_continuous:
                    condition = self.selection_conditions.get(
                        attr.name, [0, 1])
                    val = self.attr_values[attr.name][0] + condition[pos] * (
                        self.attr_values[attr.name][1] -
                        self.attr_values[attr.name][0])
                    str_val = attr.name + "= %%.%df" % attr.number_of_decimals % val
                    QToolTip.showText(ev.globalPos(), str_val)
            else:
                for curve in self.items():
                    if type(curve) == PolygonCurve and \
                            curve.boundingRect().contains(x, y) and \
                            getattr(curve, "tooltip", None):
                        (name, value, total, dist) = curve.tooltip
                        count = sum([v[1] for v in dist])
                        if count == 0:
                            continue
                        tooltip_text = "Attribute: <b>%s</b><br>Value: <b>%s</b><br>" \
                                       "Total instances: <b>%i</b> (%.1f%%)<br>" \
                                       "Class distribution:<br>" % (
                                           name, value, count, 100.0 * count / float(total))
                        for (val, n) in dist:
                            tooltip_text += "&nbsp; &nbsp; <b>%s</b> : <b>%i</b> (%.1f%%)<br>" % (
                                val, n, 100.0 * float(n) / float(count))
                        QToolTip.showText(ev.globalPos(), tooltip_text[:-4])

        elif ev.type() == QEvent.MouseMove:
            QToolTip.hideText()

        return OWPlot.event(self, ev)
コード例 #12
0
ファイル: owparallelgraph.py プロジェクト: r0k3/orange3
 def mouseReleaseEvent(self, e):
     if hasattr(self, "pressed_arrow"):
         del self.pressed_arrow
     else:
         OWPlot.mouseReleaseEvent(self, e)
コード例 #13
0
ファイル: owparallelgraph.py プロジェクト: justin2061/orange3
 def set_data(self, data, subset_data=None, **args):
     OWPlot.setData(self, data)
     ScaleData.set_data(self, data, subset_data, **args)
     self.domain_contingencies = None
コード例 #14
0
 def set_data(self, data, subset_data=None, **args):
     OWPlot.setData(self, data)
     ScaleData.set_data(self, data, subset_data, **args)
     self.domain_contingencies = None