def setup_plot(self, reset_view=True): assert not self._X is None self.graph.jitter_continuous = True self.__replot_requested = False X = self.plotdata.X = self._X self.plotdata.Y = self._Y self.plotdata.validmask = self._validmask self.plotdata.selection = self._selection if self._selection is not None else \ np.zeros(len(self._validmask), dtype=np.uint8) anchors = self.plotdata.anchors if len(anchors) == 0: if self.initialization == self.Circular: anchors = FreeViz.init_radial(X.shape[1]) else: anchors = FreeViz.init_random(X.shape[1], 2) EX = np.dot(X, anchors) c = np.zeros((X.shape[0], X.shape[1])) for i in range(X.shape[0]): c[i] = np.argsort((np.power(X[i] * anchors[:, 0], 2) + np.power(X[i] * anchors[:, 1], 2)))[::-1] self.plotdata.topattrs = np.array(c, dtype=int)[:, :10] radius = np.max(np.linalg.norm(EX, axis=1)) self.plotdata.anchors = anchors coords = (EX / radius) self.plotdata.embedding_coords = coords if reset_view: self.viewbox.setRange(RANGE) self.viewbox.setAspectLocked(True, 1) self.plot(reset_view=reset_view)
def setup_plot(self): points = FreeViz.init_radial(self._X.shape[1]) \ if self.initialization == InitType.Circular \ else FreeViz.init_random(self._X.shape[1], 2) self.graph.set_points(points) self.__set_embedding_coords() self.graph.set_attributes(self.data.domain.attributes) self.graph.reset_graph()
def update_freeviz(anchors): while True: _, projection, *_ = FreeViz.freeviz( self._X, self._Y, scale=False, center=False, initial=anchors, maxiter=10) yield projection if np.allclose(anchors, projection, rtol=1e-5, atol=1e-4): return anchors = projection
def update_freeviz(interval, initial): anchors = initial while True: res = FreeViz.freeviz(X, Y, scale=False, center=False, initial=anchors, maxiter=interval) _, anchors_new = res[:2] yield res[:2] if np.allclose(anchors, anchors_new, rtol=1e-5, atol=1e-4): return anchors = anchors_new
def init_embedding_coords(self): self.projection = FreeViz.init_radial(self._X.shape[1]) \ if self.initialization == InitType.Circular \ else FreeViz.init_random(self._X.shape[1], 2)