 violin plots.
    figsize : (float, float), optional (default: None)
        Specify width and height of plot.
    
    Returns
    -------
    p : ggplot
        A plotnine ggplot

    &#34;&#34;&#34;
    
    ### Count number of non-zero values, i.e. ESw &gt; 0
    df = df.astype(bool).sum(axis=0)
    
    ### Map column labels to annotation
    if type(annotation) is pd.DataFrame:
        annotation = annotation.iloc[:,0]
    
    # remove duplicates
    annotation = annotation.loc[~annotation.index.dup