Plots a columnwise summary of the sframe provided as input, 
    and returns the resulting Plot object.
    
    The function supports SFrames.

    Parameters
    ----------
    sf : SFrame
      The data to get a columnwise summary for.
    
    Returns
    -------
    out : Plot
      A :class: Plot object that is the columnwise summary plot.

    Examples
    --------
    Make a columnwise summary of an SFrame.

    >>> x = turicreate.SArray([1,2,3,4,5])
    >>> s = turicreate.SArray(['a','b','c','a','a'])
    >>> sf_test = turicreate.SFrame([x,x,x,x,s,s,s,x,s,x,s,s,s,x,x])
    >>> colsum = turicreate.visualization.columnwise_summary(sf_test)

def columnwise_summary(sf):
    """
    Plots a columnwise summary of the sframe provided as input, 
    and returns the resulting Plot object.
    
    The function supports SFrames.

    Parameters
    ----------
    sf : SFrame
      The data to get a columnwise summary for.
    
    Returns
    -------
    out : Plot
      A :class: Plot object that is the columnwise summary plot.

    Examples
    --------
    Make a columnwise summary of an SFrame.

    >>> x = turicreate.SArray([1,2,3,4,5])
    >>> s = turicreate.SArray(['a','b','c','a','a'])
    >>> sf_test = turicreate.SFrame([x,x,x,x,s,s,s,x,s,x,s,s,s,x,x])
    >>> colsum = turicreate.visualization.columnwise_summary(sf_test)
    """
    if not isinstance(sf, tc.data_structures.sframe.SFrame):
        raise ValueError("turicreate.visualization.columnwise_summary " + 
            "supports SFrame")
    plt_ref = tc.extensions.plot_columnwise_summary(sf)
    return Plot(plt_ref)