def plot_buffer_to_axis(self, axis=None, idx=None, limits=None): """plots the current buffer on the passed axis handle""" try: from spikeplot import plt, COLOURS except ImportError: return None # init ax = axis if ax is None: f = plt.figure() ax = f.add_subplot(111) col = 'k' if idx is not None: col = COLOURS[idx % len(COLOURS)] spks = self._xi_buf[:] n, s, c = spks.shape spks = spks.swapaxes(2, 1).reshape(n, s * c) # plot ax.plot(spks.T, color='gray') ax.plot(spks.mean(axis=0), color=col, lw=2) for i in xrange(1, c): ax.axvline((self.tf * i), ls='dashed', color='y') ax.set_xlim(0, s * c) if limits is not None: ax.set_ylim(*limits) ax.set_xlabel('time [samples]') ax.set_ylabel('amplitude [mV]') return spks.min(), spks.max()
def plot(self, data, views=2, show=False, filename=None): """plot clustering""" # get plotting tools try: from spikeplot import plt, cluster, save_figure except ImportError: return None # init views = min(views, int(data.shape[1] / 2)) fig = plt.figure() fig.suptitle('clustering [%s]' % self.clus_type) ax = [fig.add_subplot(2, views, v + 1) for v in xrange(views)] axg = fig.add_subplot(212) ncmp = int(self.labels.max() + 1) cdata = dict( zip(xrange(ncmp), [data[self.labels == c] for c in xrange(ncmp)])) # plot clustering for v in xrange(views): cluster(cdata, data_dim=(2 * v, 2 * v + 1), plot_handle=ax[v], plot_mean=sp.sqrt(self.sigma_factor), xlabel='PC %d' % int(2 * v), ylabel='PC %d' % int(2 * v + 1), show=False) # plot gof axg.plot(self._gof, ls='steps') for i in xrange(1, len(self.crange)): axg.axvline(i * self.repeats - 0.5, c='y', ls='--') axg.axvspan(self._winner - 0.5, self._winner + 0.5, fc='gray', alpha=0.2) labels = [] for k in self.crange: labels += ['%d' % k] labels += ['.'] * (self.repeats - 1) axg.set_xticks(sp.arange(len(labels))) axg.set_xticklabels(labels) axg.set_xlabel('cluster count and repeats') axg.set_ylabel(str(self.gof_type).upper()) axg.set_xlim(-1, len(labels)) # handle the resulting plot if filename is not None: save_figure(fig, filename, '') if show is True: plt.show() return True