8

Here is a question for R-users. I am interested in drawing a histogram with points stacked up, instead of a bar. For example if the data is (1,1,2,1,2,3,3,3,4,4), then I would like to see three points stacked up at 1, 2 points stacked up at 2 and so on. What is the best way to do this in R?

Shimmy Weitzhandler
  • 101,809
  • 122
  • 424
  • 632
Ramnath
  • 54,439
  • 16
  • 125
  • 152

4 Answers4

6

You can do this yourself pretty quickly:

x <- c(1,1,2,1,2,3,3,3,4,4)
plot(sort(x), sequence(table(x)))
Jonathan Chang
  • 24,567
  • 5
  • 34
  • 33
6

The simplest answer I know is this:

x <- c(1,1,2,1,2,3,3,3,4,4)
stripchart(x,method="stack",at=0)

It's better than Jonathan Chang's suggestion because stripchart does proper stacking of points.

Rob Hyndman
  • 30,301
  • 7
  • 73
  • 85
  • Thanks Rob. Stripchart seems very intuitive, although I would prefer the stack of points to be separate. – Ramnath Dec 20 '09 at 13:42
5

Greg Snow's TeachingDemos package contains a dots(x, ...) function which seems to fit your need:

dots( round( rnorm(50, 10,3) ) )

enter image description here

joran
  • 169,992
  • 32
  • 429
  • 468
2

Another easy way would be:

x <- c(1,1,2,1,2,3,3,3,4,4)
myhist <- hist(x)
myhistX <- myhist$mids
myhistY <- myhist$density

And now you can plot it in any way you like:

plot(myhistY~myhistX)

This way you can change the stacking options when building a "histogram" object.