Scott Lamb wrote: > Scott Lamb wrote: >> I've tried replacing the for loop body with this: >> >> this_method <- split.df[[i]] >> boxplot(elapsed~inactive, data=this_method, >> add=TRUE, border=i, boxfill=i, outline=FALSE) >> >> but it has two problems: >> >> * it doesn't plot at the correct x values. It looks like I need to >> supply a list of the x values as the "at" parameter, and I don't know >> how to get unique values from this_method$inactive. (I tried the clunky >> labels(split(this_method, this_method$inactive)), but it returns them as >> strings.) > > Ahh. I missed the obvious answer - there's a function called unique. > at=unique(this_method$inactive) works. > >> * it redraws the graph's frame, and it ignores bty="l" when doing so. > > also the x axis tics and labels...they're totally unreadable now.
Ahh. There is an "axis=FALSE" parameter to bxp, which boxplot passes along. Thanks again, and sorry for all the list noise. For the record, here's exactly what I did to duplicate the original graph: df <- read.csv("http://www.slamb.org/tmp/one-active.csv") png(filename="one-active.png", width=800, height=600) split.df <- split(df, df$method) plot(0, xlim=c(0, max(df$inactive)), ylim=range(df$elapsed), ylab="time (µs)", xlab="inactive file descriptors", log="y", main="1 active descriptor, 1 write", bty="n", type="n") grid() for (i in seq_along(split.df)) { this_method <- split.df[[i]] unique_inactive <- unique(this_method$inactive) boxplot(elapsed~inactive, data=this_method, at=unique_inactive, axes=FALSE, add=TRUE, border=i, boxfill=i, outline=FALSE, bty="l", whisklty="solid", staplelty="blank", medlty="blank", boxwex=max(unique_inactive)/length(unique_inactive)/2) } legend("topleft", legend=labels(split.df), fill=seq_along(split.df), bty="n") Cheers, Scott -- Scott Lamb <http://www.slamb.org/> ______________________________________________ R-help@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.