Hello C.H.

I've also been curious about this plot a while ago.
Your question today inspired me to collect all that I've came by in one
post, and I published it here:

http://www.r-statistics.com/2011/03/scatter-dot-beeswarm-box-violin-plot-and-plotting-it-with-r/

I hope it might help you or others in the future.

Best,
Tal

<http://www.r-statistics.com/2011/03/scatter-dot-beeswarm-box-violin-plot-and-plotting-it-with-r/>

----------------Contact
Details:-------------------------------------------------------
Contact me: Tal.Galili@gmail.com |  972-52-7275845
Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) |
www.r-statistics.com (English)
----------------------------------------------------------------------------------------------




On Wed, Mar 9, 2011 at 9:27 AM, Jim Lemon <jim@bitwrit.com.au> wrote:

> On 03/08/2011 11:27 PM, C.H. wrote:
>
>> Dear R Users,
>>
>> I would like to know is there any package to create a plot like this?
>>
>> http://dl.dropbox.com/u/5409929/cs1160521f01.gif
>>
>> X axis is categorical. And the positions of the points are
>> corresponding to the frequency. (similar to violinplot)
>>
>>  Hi CH,
> This looks like it uses the same method as in the function brkdn.plot in
> the plotrix package. What this does is to offset each value in a particular
> stack by a small amount to the right, then twice that amount to the left,
> then three times that amount to the right, and so on. This would spread your
> data points out for each bin of values. The plot looks as though the data
> points in each bin are sorted before spreading, so that the "branches" in
> each bin slant upward. Let's see:
>
> x<-list(runif(90),runif(100),runif(80))
>
> dendroPlot<-function(x,breaks=NA,nudge=NA) {
>  if(is.na(breaks[1]))
>  breaks=seq(min(unlist(x),na.rm=TRUE),
>  max(unlist(x),na.rm=TRUE),length.out=10)
>  plot(c(0,length(x)+1),range(unlist(x)),type="n")
>  if(is.na(nudge)) nudge<-strwidth("o")/2
>  for(list_element in 1:length(x)) {
>  binvar<-cut(x[[list_element]],breaks=breaks)
>  for(bin in 1:length(levels(binvar))) {
>   thisbin<-which(as.numeric(binvar)==bin)
>   offset<-(1:length(x[[list_element]][thisbin])-1)*nudge
>   offset[seq(2,length(offset),by=2)]<-
>    -offset[seq(2,length(offset),by=2)]
>   points(list_element+offset,sort(x[[list_element]][thisbin]))
>  }
>  }
> }
>
> dendroPlot(x)
>
> I think this might make it into plotrix. Let me know if it does what you
> want.
>
> Jim
>
>
> ______________________________________________
> 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.
>

	[[alternative HTML version deleted]]

