title: Remove outliers fully from multiple boxplots made with ggplot2 in R and display the boxplots in expanded format
body: <p>I have some data <a href="https://www.dropbox.com/s/4wrqfcvr0tngimt/data.txt" rel="noreferrer">here</a> [in a .txt file] which I read into a data frame df,</p>
  
  <pre><code>df &lt;- read.table("data.txt", header=T,sep="\t")
  </code></pre>
  
  <p>I remove the negative values in the column <code>x</code> (since I need only positive values) of the <code>df</code> using the following code,</p>
  
  <pre><code>yp &lt;- subset(df, x&gt;0)
  </code></pre>
  
  <p>Now I want plot multiple box plots in the same layer. I first melt the data frame <code>df</code>, and the plot which results contains several outliers as shown below.</p>
  
  <pre><code># Melting data frame df    
  df_mlt &lt;-melt(df, id=names(df)[1])
      # plotting the boxplots
      plt_wool &lt;- ggplot(subset(df_mlt, value &gt; 0), aes(x=ID1,y=value)) + 
        geom_boxplot(aes(color=factor(ID1))) +
        scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x), labels = trans_format("log10", math_format(10^.x))) +    
        theme_bw() +
        theme(legend.text=element_text(size=14), legend.title=element_text(size=14))+
        theme(axis.text=element_text(size=20)) +
        theme(axis.title=element_text(size=20,face="bold")) +
        labs(x = "x", y = "y",colour="legend" ) +
        annotation_logticks(sides = "rl") +
        theme(panel.grid.minor = element_blank()) +
        guides(title.hjust=0.5) +
        theme(plot.margin=unit(c(0,1,0,0),"mm")) 
      plt_wool
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/xFGeU.png" alt="Boxplot with outliers"></p>
  
  <p>Now I need to have a plot without any outliers, so to do this first I compute the lower and upper bound whiskers I use the following code as suggested <a href="https://stackoverflow.com/questions/5677885/ignore-outliers-in-ggplot2-boxplot">here</a>,</p>
  
  <pre><code>sts &lt;- boxplot.stats(yp$x)$stats
  </code></pre>
  
  <p>To remove the outlier I add the upper and lower whisker limits as below,</p>
  
  <pre><code>p1 = plt_wool + coord_cartesian(ylim = c(sts*1.05,sts/1.05))
  </code></pre>
  
  <p>The resulting plot is shown below, while the above line of code correctly removes most of the top outliers all the bottom outliers still remain. Could someone please suggest how to remove all the outlier completely from this plot, Thanks.</p>
  
  <p><img src="https://i.stack.imgur.com/0RORB.png" alt="enter image description here"></p>