code: def _plot_spectrogram(G, node_idx):
      r
      from pygsp import features
      qtg, _, _ = _import_qtg()
      if not hasattr(G, 'spectr'):
          features.compute_spectrogram(G)
      M = G.spectr.shape[1]
      spectr = G.spectr[node_idx, :] if node_idx is not None else G.spectr
      spectr = np.ravel(spectr)
      min_spec, max_spec = spectr.min(), spectr.max()
      pos = np.array([0., 0.25, 0.5, 0.75, 1.])
      color = [[20, 133, 212, 255], [53, 42, 135, 255], [48, 174, 170, 255],
               [210, 184, 87, 255], [249, 251, 14, 255]]
      color = np.array(color, dtype=np.ubyte)
      cmap = qtg.ColorMap(pos, color)
      spectr = (spectr.astype(float) - min_spec) / (max_spec - min_spec)
      w = qtg.GraphicsWindow()
      w.setWindowTitle("Spectrogram of {}".format(G.__repr__(limit=4)))
      label = 'frequencies {}:{:.2f}:{:.2f}'.format(0, G.lmax/M, G.lmax)
      v = w.addPlot(labels={'bottom': 'nodes',
                            'left': label})
      v.setAspectLocked()
      spi = qtg.ScatterPlotItem(np.repeat(np.arange(G.N), M),
                                np.ravel(np.tile(np.arange(M), (1, G.N))),
                                pxMode=False,
                                symbol='s',
                                size=1,
                                brush=cmap.map(spectr, 'qcolor'))
      v.addItem(spi)
      global _qtg_windows
      _qtg_windows.append(w)