[R] package to plot mean and standard deviation directly on data

Luigi Marongiu marongiu.luigi at gmail.com
Tue May 13 14:53:54 CEST 2014


 Dear Jim,
I have use the brkdn.plot as you suggested and I quite like it since
it is easy to use. Would be possible to overlap the confidence bars
(SD) with the mean value points? The implemetation leaves a small
space as you can see in this figure. I tired with a pch=list(type="o",
pch=c(16, 1, 15)) but it did not work.
In addition: what are the code, if applicable, for let's say:

mean / standard deviation
median / min-max
mean / 95% confidence interval

Here the implemetation is standard error.
Compliments for the development of this nice function,
Regards
luigi

# code::
my.data<-structure(list(
group = c(
0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
sample = c(
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1),
copy = c(
626.01, 584.37, 568.5, 154.76, 146.47, 155.83,
297.64, 291.56, 272.16, 414.19, 402.94, 402.94,
351.11, 274.04, 291.56, 66.82, 39.06, 83.87,
16.98, 45.76, 15, 1.39, 98.25, 13.62, 181.32,
142.49, 108.94, 4.95, 5.92, 4.72, 25.14, 31.12,
40.15, 34.27, 26.93, 24.8)),
 row.names = c(NA, -36L),  class = "data.frame")
my.data$sample<-factor(my.data$sample, levels = c(0,1))
 levels(my.data$sample)<-c("first", "second")

brkdn.plot(copy~group+sample,data=my.data, mct="mean", md="std.error",
stagger=NA, dispbar=TRUE,
type="p", pch=c(16, 1, 15),
main="Breakdown plot", xlab="sample",ylab="value", xaxlab=c("first", "second"))

On Mon, May 12, 2014 at 10:36 PM, Jim Lemon <jim at bitwrit.com.au> wrote:
> On Mon, 12 May 2014 06:50:29 PM Luigi Marongiu wrote:
>>  Dear all,
>> is there a package, preferably not ggplot, to draw the lines for the
>> standard deviation just by providing the vector with the data? more
> or
>> less as it happens with the boxplot function.
>> the procedure i implemented herein requires the calculation of the
>> means, standard deviations, limits (mean+/-SD) and the horizontal
> bars
>> as well, everything plotted individually. the packages i have seen on
>> google they all require to calculate the mean/SD prior to the plot.
>> best wishes,
>> luigi
>>
>>
>> # in case you are interested this is the code, which is faulty for the
>> factor of the variable "sample"
>>
>> my.data<-structure(list(
>> group = c(
>> 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
>> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
>> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
>> sample = c(
>> 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
>> 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
>> 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1),
>> copy = c(
>> 626.01, 584.37, 568.5, 154.76, 146.47, 155.83,
>> 297.64, 291.56, 272.16, 414.19, 402.94, 402.94,
>> 351.11, 274.04, 291.56, 66.82, 39.06, 83.87,
>> 16.98, 45.76, 15, 1.39, 98.25, 13.62, 181.32,
>> 142.49, 108.94, 4.95, 5.92, 4.72, 25.14, 31.12,
>> 40.15, 34.27, 26.93, 24.8)),
>>  row.names = c(NA, -36L),  class = "data.frame")
>> # define subset
>> A<-subset(my.data, group==0)
>> # define average and standard deviation
>> avg.A<-aggregate(copy ~ sample, A, mean)
>> names(avg.A)<-c("samp.", "avg")
>> sd.A<-aggregate(copy ~ sample, A, sd)
>> names(sd.A)<-c("Samp", "sd")
>> A.bound<-merge(avg.A, sd.A, by.x="samp.", by.y="Samp")
>> # define limits
>> min.A<-A.bound$avg - A.bound$sd
>> max.A<-A.bound$avg + A.bound$sd
>> # plot
>> plot(avg  ~ samp., data=avg.A,  pch=16, ylim=c(-10, 600),
>> las=3, cex.lab=1.5, cex.main=1.8, col="black",
>> ylab=expression(bold("copy")),
>> xlab=expression(bold("sample")),
>> main="Mean and std dev")
>> # add limit segments
>> segments(seq(length(avg.A$sample)), max.A,
> seq(length(avg.A$sample)),
>> min.A) segments(seq(length(avg.B$sample)), max.B,
>> seq(length(avg.B$sample)),  min.B) # add notch
>> notch<-0.02  # define end of bar extension
>> segments(seq(length(avg.A$sample))-notch, max.A,
>> seq(length(avg.A$sample))+notch,  max.A)
>> segments(seq(length(avg.A$sample))-notch, min.A,
>> seq(length(avg.A$sample))+notch,  min.A)
>>
> Hi Luigi,
> Have a look at brkdn.plot in the plotrix package.
>
> Jim
>



More information about the R-help mailing list