[R] Overlay boxplot and scatter.smooth line

jlh.membership jlh.membership at gmail.com
Wed Nov 20 17:39:17 CET 2013


Same thing using ggplot...

# your data
x <- c(rep(1,100),rep(2,100),rep(3,100))
y <- c(rnorm(100,1),rnorm(100,2),rnorm(100,3))

df <- data.frame(x=x, y=y)

library(ggplot2)
ggp <- ggplot(df) + labs(x="X", y="Y") 
ggp <- ggp + geom_boxplot(aes(x=factor(x), y=y)) 
ggp <- ggp + geom_smooth(formula=y~x, aes(x=x, y=y), method="loess", se=F) 
ggp

Setting method="lm" above would plot linear model instead of loess, setting se=T (the default) would plot 95% CL for the model.

Adding the line:
ggp <- ggp +  stat_summary(fun.data="mean_cl_normal", aes(x=factor(x),y=y), size=1.2, color="red")
ggp

will overlay mean and 95% CL (assuming normal distribution of error) at each level of x. 

-----Original Message-----
From: Johannes Radinger [mailto:johannesradinger at gmail.com] 
Sent: Tuesday, November 19, 2013 10:01 AM
To: Adams, Jean
Cc: R help
Subject: Re: [R] Overlay boxplot and scatter.smooth line

Thanks...that works great!

/J


On Tue, Nov 19, 2013 at 2:39 PM, Adams, Jean <jvadams at usgs.gov> wrote:

> Use lines() with loess.smooth() instead of scatter.smooth() to add to 
> the already existing boxplot.  For example,
>
> boxplot(y~x)
> lines(loess.smooth(x, y))
>
> Jean
>
>
> On Tue, Nov 19, 2013 at 4:43 AM, Johannes Radinger < 
> johannesradinger at gmail.com> wrote:
>
>> Hi,
>>
>> I'd like to plot a boxplot and use a scatter.smooth line plot as an 
>> overlay for this plot.
>> This works except for the problem that the x-axis ticks for both 
>> plots are differently spaced:
>> The boxplot ticks are closer and the space between the outer most 
>> boxplots and the plot region (box) is larger for boxplots than for 
>> the scatter.smooth plot. Is there any plot-option that can be changed 
>> to produce the desired plot.
>>
>> Here an example to illustrate what problem I am facing:
>>
>> x <- c(rep(1,100),rep(2,100),rep(3,100))
>> y <- c(rnorm(100,1),rnorm(100,2),rnorm(100,3))
>>
>> boxplot(y~x)
>> par(new=TRUE)
>> scatter.smooth(x, y, xaxt="n", yaxt="n", ann=FALSE)
>>
>> Moreover, I'd like to plot just the smoothed line only and not the 
>> datapoints.
>> Any suggestions?
>>
>> best regards,
>>
>> J.
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list