def METHOD_NAME(timelines, data = None, width = None, height = None):
    """Plot 1 or more timelines.
    Parameters:
        - timelines: The timelines to plot.
        - data: (Optional) the data to use for timelines without specific data.
          Defaults to None.
        - width: (Optional) the width of each plot. Defaults to 600px.
        - height: (Optional) the height of each plot. Defaults to 250px.
    """
    width = width or 600
    height = height or 250
    min_time = None
    max_time = None
    entities = []
    if isinstance(data, pd.DataFrame):
       data = Data(data)
    if isinstance(data, Data):
        min_time = data.min_time
        max_time = data.max_time
    for timeline in timelines:
        if isinstance(timeline.data, Data):
            if min_time:
                min_time = timeline.data.min_time
            else:
                min_time = min(min_time, timeline.data.min_time)
            max_time = max(max_time, timeline.data.max_time)
        # Make sure the "previous" values are defined before we create the source.
        timeline_data = timeline.data or data
        entities.append(timeline_data.entities)
        if timeline.continuous:
            timeline_data.prev(timeline_data.time)
            timeline_data.prev(timeline.name)
    entities = np.concatenate(entities)
    entities = np.unique(entities)
    entities = np.sort(entities)
    x_range_padding = 0.03 * (max_time - min_time)
    x_range = Range1d(min_time - x_range_padding, max_time + x_range_padding)
    plots = []
    for timeline in timelines:
        plot = timeline.plot(data, x_range, height, width, entities)
        plots.append(plot)
    return column(plots