Hi, I wanted to plot the histogram of a vector and then, plot the density function of subsets of the vector on the histogram. So I use truehist in MASS package and lines(density) as follows: length(b) = 1000 truehist(b) lines(density(b[1:100])) however the density plot of the first 100 points exceeds the max of y axis (see attached). how is it possible to make a graphics so that the density plot of the subsets doesn't go beyond the maximum of all points in the complete set? Cheers, Carol
carol white wrote:> Hi, > I wanted to plot the histogram of a vector and then, plot the density function of subsets of the vector on the histogram. So I use truehist in MASS package and lines(density) as follows: > > length(b) = 1000 > truehist(b) > lines(density(b[1:100]))I do not undertsand what you mean. Can you please provide a *reproducible* example? Uwe Ligges> however the density plot of the first 100 points exceeds the max of y axis (see attached). how is it possible to make a graphics so that the density plot of the subsets doesn't go beyond the maximum of all points in the complete set? > > Cheers, > > Carol > > > > > > > > > > ------------------------------------------------------------------------ > > ______________________________________________ > R-help at 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.
carol white <wht_crl at yahoo.com> wrote>Consider a vector of 100 elements (attached files). then, > >truehist(b) >lines(density(b[20:50])) > >How is it possible to have density plots of all subsets like b[20:50] within histogram (without exceeding the max of historgram on y axis)? >I didn't open your attached file but b <- rnorm(100) library(MASS) truehist(b) lines(density(b[20:50])) works fine if some of your density plots line go too high, then you can first find the maximum and then use that in the truehist function, which has ymax. There's probably some elegant way to find the max, but I *THINK* this is right: den1 <- density(b[20:50]) max1 <- max(den1[[2]]) then, if you have a lot of densities, you could get maxim <- max(max1, max2) or some such HTH Peter Peter L. Flom, PhD Statistical Consultant www DOT peterflomconsulting DOT com
carol white wrote:> Hi, > I wanted to plot the histogram of a vector and then, plot the density function of subsets of the vector on the histogram. So I use truehist in MASS package and lines(density) as follows: > > length(b) = 1000 > truehist(b) > lines(density(b[1:100])) > > however the density plot of the first 100 points exceeds the max of y axis (see attached). how is it possible to make a graphics so that the density plot of the subsets doesn't go beyond the maximum of all points in the complete set? > >Hi Carol, You can use the rescale function in the plotrix package to do things like this. Have a look at the example on the help page: # scale one vector into the range of another normal.counts<-rnorm(100) normal.tab<-tabulate(cut(normal.counts,breaks=seq(-3,3,by=1))) normal.density<-rescale(dnorm(seq(-3,3,length=100)),range(normal.tab)) # now plot them plot(c(-2.5,-1.5,-0.5,0.5,1.5,2.5),normal.tab,xlab="X values", type="h",col="green") lines(seq(-3,3,length=100),normal.density,col="blue") Jim