[R] Violin plot for discrete variables.

Gabor Grothendieck ggrothendieck at myway.com
Mon Mar 21 16:42:56 CET 2005

Witold Eryk Wolski <W.E.Wolski <at> ncl.ac.uk> writes:

: Dear Rgurus,
: To my knowledge the best way to visualize the distribution of a discrete 
: variable X is
: plot(table(X))
: The problem which I have is the following. I have to discrete variables 
: X and Y which distribution I would like to compare. To overlay the 
: distribution of Y with lines(table(Y)) gives not satisfying results. 
: This is the same in case of using density or histogram.
: Hence, I am wondering if there is a equivalent of the vioplot function 
: (package vioplot) for discrete variables
: which starts with a boxplot and than adds a rotated plot(table()) plot 
: to each side of the box plot.
: Maybee I should ask it first: Does such a plot make any sense? If not 
: are there better solutions?

You could try a barplot or a balloonplot:

tab <- table(stack(list(x1 = x1, x2 = x2))) # x1, x2 from Andy's post
barplot(t(tab), beside = TRUE)


Although intended for comparing data to a theoretical distribution,
rootogram can compare two discrete distributions:

rootogram(tab[,1], tab[,2])

Another possibility is to fit each distribution to a parametric form
using vcd::distplot as shown in the examples on its help page.

More information about the R-help mailing list