docs: public void replot() {
      width = co.size();
      height = (int) Math.ceil(width * .2);
      ratio = width / (double) height;
      height = height < MIN_HEIGHT ? MIN_HEIGHT : height > MAX_HEIGHT ? MAX_HEIGHT : height;
      if(scale == null) {
        scale = computeScale(co);
      }
  
      BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  
      int x = 0;
      for(DBIDIter it = co.iter(); it.valid(); it.advance()) {
        double reach = co.getReachability(it);
        final int y = scaleToPixel(reach);
        try {
          int col = colors.getColorForDBID(it);
          for(int y2 = height - 1; y2 >= y; y2--) {
            img.setRGB(x, y2, col);
          }
        }
        catch(ArrayIndexOutOfBoundsException e) {
          LOG.error("Plotting out of range: " + x + "," + y + " >= " + width + "x" + height);
        }
        x++;
      }
  
      plot = img;
    }