def _anchor_circle(self, variables): # minimum visible anchor radius (radius) min_radius = self._get_min_radius() axisitems = [] for anchor, var in zip(self.plotdata.axes, variables[:]): axitem = AnchorItem( line=QLineF(0, 0, *anchor), text=var.name, ) axitem.setVisible(np.linalg.norm(anchor) > min_radius) axitem.setPen(pg.mkPen((100, 100, 100))) axitem.setArrowVisible(True) self.viewbox.addItem(axitem) axisitems.append(axitem) self.plotdata.axisitems = axisitems if self.placement == self.Placement.Circular: return hidecircle = QGraphicsEllipseItem() hidecircle.setRect( QRectF(-min_radius, -min_radius, 2 * min_radius, 2 * min_radius)) _pen = QPen(Qt.lightGray, 1) _pen.setCosmetic(True) hidecircle.setPen(_pen) self.viewbox.addItem(hidecircle) self.plotdata.hidecircle = hidecircle
def _anchor_circle(self): # minimum visible anchor radius (radius) minradius = self.radius / 100 + 1e-5 for item in chain(self.plotdata.anchoritem, self.plotdata.items): self.viewbox.removeItem(item) self.plotdata.anchoritem = [] self.plotdata.items = [] for anchor, var in zip(self.plotdata.anchors, self.data.domain.attributes): if True or np.linalg.norm(anchor) > minradius: axitem = AnchorItem( line=QLineF(0, 0, *anchor), text=var.name, ) axitem.setVisible(np.linalg.norm(anchor) > minradius) axitem.setPen(pg.mkPen((100, 100, 100))) axitem.setArrowVisible(True) self.plotdata.anchoritem.append(axitem) self.viewbox.addItem(axitem) hidecircle = QGraphicsEllipseItem() hidecircle.setRect( QRectF(-minradius, -minradius, 2 * minradius, 2 * minradius)) _pen = QPen(Qt.lightGray, 1) _pen.setCosmetic(True) hidecircle.setPen(_pen) self.viewbox.addItem(hidecircle) self.plotdata.items.append(hidecircle) self.plotdata.hidecircle = hidecircle
def _add_circle_item(self): if self._points is None: return self._circle_item = QGraphicsEllipseItem() self._circle_item.setRect(QRectF(-1., -1., 2., 2.)) self._circle_item.setPen(pg.mkPen(QColor(0, 0, 0), width=2)) self.plot_widget.addItem(self._circle_item)
def update_circle(self): if self.scatterplot_item is not None and not self.circle_item: self.circle_item = QGraphicsEllipseItem() self.circle_item.setRect(QRectF(-1, -1, 2, 2)) color = self.plot_widget.palette().color(QPalette.Text) self.circle_item.setPen(pg.mkPen(color, width=2)) self.plot_widget.addItem(self.circle_item)
def __init__(self, pen = QPen(Qt.black), brush = QBrush(Qt.NoBrush), xCenter = 0.0, yCenter = 0.0, radius = 1.0): OWCurve.__init__(self) self._item = QGraphicsEllipseItem(self) self.center = xCenter, yCenter self.radius = radius self._rect = QRectF(xCenter-radius, yCenter-radius, 2*radius, 2*radius) self.set_pen(pen) self.set_brush(brush)
def __init__(self, color, parent): super().__init__(parent) height, width = self.SIZE.height(), self.SIZE.width() self.__circle = QGraphicsEllipseItem(0, 0, height, width) self.__circle.setBrush(QBrush(color)) self.__circle.setPen(QPen(QColor(0, 0, 0, 0))) self.__circle.setParentItem(self)
def test_anchoritem(self): anchoritem = NodeAnchorItem(None) self.scene.addItem(anchoritem) path = QPainterPath() path.addEllipse(0, 0, 100, 100) anchoritem.setAnchorPath(path) anchor = AnchorPoint() anchoritem.addAnchor(anchor) ellipse1 = QGraphicsEllipseItem(-3, -3, 6, 6) ellipse2 = QGraphicsEllipseItem(-3, -3, 6, 6) self.scene.addItem(ellipse1) self.scene.addItem(ellipse2) anchor.scenePositionChanged.connect(ellipse1.setPos) with self.assertRaises(ValueError): anchoritem.addAnchor(anchor) anchor1 = AnchorPoint() anchoritem.addAnchor(anchor1) anchor1.scenePositionChanged.connect(ellipse2.setPos) self.assertSequenceEqual(anchoritem.anchorPoints(), [anchor, anchor1]) self.assertSequenceEqual(anchoritem.anchorPositions(), [0.5, 0.5]) anchoritem.setAnchorPositions([0.5, 0.0]) self.assertSequenceEqual(anchoritem.anchorPositions(), [0.5, 0.0]) def advance(): t = anchoritem.anchorPositions() t = [(t + 0.05) % 1.0 for t in t] anchoritem.setAnchorPositions(t) timer = QTimer(anchoritem, interval=10) timer.start() timer.timeout.connect(advance) self.qWait() timer.stop()
def place_point(_x, _y, _c): item = QGraphicsEllipseItem() item.setX(_x) item.setY(_y) item.setRect(0, 0, self.POINT_R, self.POINT_R) color = QColor(*_c) item.setPen(QPen(color)) item.setBrush(QBrush(color)) self._group.addToGroup(item)
def put_point(_x, _y): item = QGraphicsEllipseItem() item.setX(_x) item.setY(_y) item.setRect(0, 0, self.POINT_R, self.POINT_R) color = QColor(*colors.pop().astype(int)) item.setPen(QPen(color)) item.setBrush(QBrush(color)) self.__group.addToGroup(item)
def _add_circle_item(self): if not len(self._points): return r = self.radius / 100 + 1e-5 pen = pg.mkPen(QColor(Qt.lightGray), width=1, cosmetic=True) self._circle_item = QGraphicsEllipseItem() self._circle_item.setRect(QRectF(-r, -r, 2 * r, 2 * r)) self._circle_item.setPen(pen) self.plot_widget.addItem(self._circle_item)
def pie_chart(self, x, y, r, dist, colors): start_angle = 0 dist = np.asarray(dist) spans = dist / (float(np.sum(dist)) or 1) * 360 * 16 for span, color in zip(spans, colors): if not span: continue if self.explode: mid_ang = (start_angle + span / 2) / 360 / 16 * 2 * pi dx = r / 30 * cos(mid_ang) dy = r / 30 * sin(mid_ang) else: dx = dy = 0 ellipse = QGraphicsEllipseItem(x - r / 2 + dx, y - r / 2 - dy, r, r) if len(spans) > 1: ellipse.setStartAngle(start_angle) ellipse.setSpanAngle(span) ellipse.setBrush(QColor(*color)) self.scene.addItem(ellipse) start_angle += span
def __init__(self): super().__init__() self.data = None self.subset_data = None self._subset_mask = None self._selection = None # np.array self.__replot_requested = False self._new_plotdata() self.variable_x = ContinuousVariable("radviz-x") self.variable_y = ContinuousVariable("radviz-y") box = gui.vBox(self.mainArea, True, margin=0) self.graph = OWRadvizGraph(self, box, "Plot", view_box=RadvizInteractiveViewBox) self.graph.hide_axes() box.layout().addWidget(self.graph.plot_widget) plot = self.graph.plot_widget SIZE_POLICY = (QSizePolicy.Minimum, QSizePolicy.Maximum) self.variables_selection = VariablesSelection() self.model_selected = VariableListModel(enable_dnd=True) self.model_other = VariableListModel(enable_dnd=True) self.variables_selection(self, self.model_selected, self.model_other) self.vizrank, self.btn_vizrank = RadvizVizRank.add_vizrank( self.controlArea, self, "Suggest features", self.vizrank_set_attrs ) self.btn_vizrank.setSizePolicy(*SIZE_POLICY) self.variables_selection.add_remove.layout().addWidget(self.btn_vizrank) self.viewbox = plot.getViewBox() self.replot = None g = self.graph.gui pp_box = g.point_properties_box(self.controlArea) pp_box.setSizePolicy(*SIZE_POLICY) self.models = g.points_models box = gui.vBox(self.controlArea, "Plot Properties") box.setSizePolicy(*SIZE_POLICY) g.add_widget(g.JitterSizeSlider, box) g.add_widgets([g.ShowLegend, g.ClassDensity, g.LabelOnlySelected], box) zoom_select = self.graph.box_zoom_select(self.controlArea) zoom_select.setSizePolicy(*SIZE_POLICY) self.icons = gui.attributeIconDict p = self.graph.plot_widget.palette() self.graph.set_palette(p) gui.auto_commit( self.controlArea, self, "auto_commit", "Send Selection", auto_label="Send Automatically", ) self.graph.zoom_actions(self) self._circle = QGraphicsEllipseItem() self._circle.setRect(QRectF(-1.0, -1.0, 2.0, 2.0)) self._circle.setPen(pg.mkPen(QColor(0, 0, 0), width=2))
def test_anchoritem(self): anchoritem = NodeAnchorItem(None) anchoritem.setAnimationEnabled(False) self.scene.addItem(anchoritem) path = QPainterPath() path.addEllipse(0, 0, 100, 100) anchoritem.setAnchorPath(path) anchor = AnchorPoint() anchoritem.addAnchor(anchor) ellipse1 = QGraphicsEllipseItem(-3, -3, 6, 6) ellipse2 = QGraphicsEllipseItem(-3, -3, 6, 6) self.scene.addItem(ellipse1) self.scene.addItem(ellipse2) anchor.scenePositionChanged.connect(ellipse1.setPos) with self.assertRaises(ValueError): anchoritem.addAnchor(anchor) anchor1 = AnchorPoint() anchoritem.addAnchor(anchor1) anchor1.scenePositionChanged.connect(ellipse2.setPos) self.assertSequenceEqual(anchoritem.anchorPoints(), [anchor, anchor1]) self.assertSequenceEqual(anchoritem.anchorPositions(), [2 / 3, 1 / 3]) anchoritem.setAnchorPositions([0.5, 0.0]) self.assertSequenceEqual(anchoritem.anchorPositions(), [0.5, 0.0]) def advance(): t = anchoritem.anchorPositions() t = [(t + 0.05) % 1.0 for t in t] anchoritem.setAnchorPositions(t) timer = QTimer(anchoritem, interval=10) timer.start() timer.timeout.connect(advance) self.qWait() timer.stop() anchoritem.setAnchorOpen(True) anchoritem.setHovered(True) self.assertEqual(*[p.scenePos() for p in anchoritem.anchorPoints()]) anchoritem.setAnchorOpen(False) self.assertNotEqual(*[p.scenePos() for p in anchoritem.anchorPoints()]) anchoritem.setAnchorOpen(False) anchoritem.setHovered(True) self.assertNotEqual(*[p.scenePos() for p in anchoritem.anchorPoints()]) anchoritem = NodeAnchorItem(None) anchoritem.setSignals([ InputSignal("first", "object", "set_first"), InputSignal("second", "object", "set_second") ]) self.assertListEqual( anchoritem._NodeAnchorItem__pathStroker.dashPattern(), list(anchoritem._NodeAnchorItem__unanchoredDash)) anchoritem.setAnchorOpen(True) anchoritem.setHovered(True) self.assertListEqual( anchoritem._NodeAnchorItem__pathStroker.dashPattern(), list(anchoritem._NodeAnchorItem__channelDash))
def update_circle(self): if self.scatterplot_item is not None and not self.circle_item: self.circle_item = QGraphicsEllipseItem() self.circle_item.setRect(QRectF(-1, -1, 2, 2)) self.circle_item.setPen(pg.mkPen(QColor(0, 0, 0), width=2)) self.plot_widget.addItem(self.circle_item)