# Re: [R] Violin plot for discrete variables.

From: Gabor Grothendieck <ggrothendieck_at_myway.com>
Date: Tue 22 Mar 2005 - 02:42:56 EST

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)

library(gplots)
balloonplot(tab)

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

library(vcd)
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.

R-help@stat.math.ethz.ch mailing list