def METHOD_NAME(self):
    """Output drawings stored in canvas object."""
    for _, data in self.canvas.collections:
        xvals = np.asarray(data.xvals, dtype=float)
        yvals = np.asarray(data.yvals, dtype=float)
        offsets = [self.canvas.assigned_coordinates[bit] for bit in data.bits]
        if isinstance(data, drawings.BoxData):
            # box data
            if data.data_type in [
                str(types.BoxType.SCHED_GATE.value),
                str(types.BoxType.DELAY.value),
            ]:
                # draw a smoothly rounded rectangle
                xs, ys1, ys2 = self._time_bucket_outline(xvals, yvals)
                self.ax.fill_between(
                    x=xs, y1=ys1 + offsets[0], y2=ys2 + offsets[0], **data.styles
                )
            else:
                # draw a rectangle
                x0, x1 = xvals
                y0, y1 = yvals + offsets[0]
                rect = Rectangle(xy=(x0, y0), width=x1 - x0, height=y1 - y0)
                pc = PatchCollection([rect], **data.styles)
                self.ax.add_collection(pc)
        elif isinstance(data, drawings.LineData):
            # line data
            self.ax.plot(xvals, yvals + offsets[0], **data.styles)
        elif isinstance(data, drawings.TextData):
            # text data
            if data.latex is not None:
                s = rf"${data.latex}$"
            else:
                s = data.text
            self.ax.text(x=xvals[0], y=yvals[0] + offsets[0], s=s, **data.styles)
        elif isinstance(data, drawings.GateLinkData):
            # gate link data
            self.ax.plot(xvals.repeat(len(offsets)), offsets, **data.styles)
        else:
            raise VisualizationError(
                "Data {name} is not supported by {plotter}"
                "".format(name=data, plotter=self.__class__.__name__)
            )