>>>>> itpro <itp...@yandex.ru> >>>>> on Thu, 22 Dec 2016 16:17:28 +0300 writes:
> Hi, everyone. > I stumbled upon weird histogram behaviour. > Consider this "dice emulator": > Step 1: Generate uniform random array x of size N. > Step 2: Multiply each item by six and round to next bigger integer to get numbers 1 to 6. > Step 3: Plot histogram. >> x<-runif(N) >> y<-ceiling(x*6) >> hist(y,freq=TRUE, col='orange') > Now what I get with N=100000 >> x<-runif(100000) >> y<-ceiling(x*6) >> hist(y,freq=TRUE, col='green') > At first glance looks OK. > Now try N=100 >> x<-runif(100) >> y<-ceiling(x*6) >> hist(y,freq=TRUE, col='red') > Now first bar is not where it should be. > Hmm. Look again to 100000 histogram... First bar is not where I want it, it's only less striking due to narrow bars. > So, first bar is always in wrong position. How do I fix it to make perfectly spaced bars? Don't use histograms *at all* for such discrete integer data. N <- rpois(100, 5) plot(table(N), lwd = 4) Histograms should be only be used for continuous data (or discrete data with "many" possible values). It's a pain to see them so often "misused" for data like the 'N' above. Martin Maechler, ETH Zurich ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.