Federico,

Yes, do use axis(2, at = whatever, labels = whateverelse) for one axis.
Then use axis(4, ...) for the other axis.
You may need to use par('usr') to determine the y-extent of the plot.

 -Peter Ehlers

On 2010-05-14 11:50, Federico Calboli wrote:
On 14 May 2010, at 18:25, Thomas Stewart wrote:

First, why doesn't the following code work?  What exactly is the error you are 
getting?

par(mfrow=c(1,2))
pop1<-rnorm(100)
hist(pop1,freq=F,ylim=c(0,1))
pop2<-rgamma(100,1,1)
hist(pop2,freq=F,ylim=c(0,1))

Let's define 'work'. The code above works, it just utterly fails to do what I 
need to do, i.e. plot two distributions side by side on one single plot -- 
hence, I need to use multhist(), as the subject of my email might suggest...

Second, help.search("multihist") returned the multi.hist function.  Is 
multi.hist [instead of multihist] the function you are working with?

I do not think so, I'm using multhist() is from library plotrix. I'll look at 
multi.hist, it might be more flexible.

Third, it sounds like you want to change the scale of the y axis.  The scale 
change you want is linear, so why not change the scale manually? Something like 
this will manually change the scale to percentages:

pop1<-rnorm(156)
hist.pop1<-hist(pop1,yaxt="n",ylab="%",main="")
t<-axTicks(2)
axis(2,at=t,labels=round(t/length(pop1)*100,1))

Excellent! that's what I need. Unfortunately, because the two pops are 
different sized I will have to cook up a second y-axis on the right of the plot 
for the second population

Then, again, changing the scale creates more of a bar chart than a histogram 
plot.  Maybe you want to look at the barchart functions directly.  Or maybe 
directly calculate the bin percentages and plot them directly.

I agree, but it is quite a bit more work, which, given the issue at hand 
(unability to read a chart for some users), does not seem worth it.

I think you have a lot of options to plot what you want.

Your suggestion for the axis is excellent, thank you very much.

F



-tgs


On Fri, May 14, 2010 at 11:51 AM, Federico Calboli<f.calb...@imperial.ac.uk>  
wrote:
On 14 May 2010, at 16:09, Thomas Stewart wrote:

Please be more specific with your question.  Perhaps a simple subset of the 
data you are trying to plot?  Here is some non-specific advice:

Plotting histograms as percentages instead of frequency counts is already an 
option of the hist function.  For example,

pop1<-rnorm(100)
hist(pop1,freq=F)

What you get is a desity, not a percentage, so you could have two bars with a 
value greater 0.5 on the y-axis. The fact that the area sums up to 1 does not 
mean that the sum of the heights adds up to 1 --the thing that my ignoramus 
want to see to understand. On the other hand, freq =T gives the counts, and the 
sum of the counts is the population total -- therefore (bar counts)/(pop total) 
*100  is the precentage. If I could slap that on the label of the y-axis I'd be 
sorted.


If you are plotting two histograms side-by-side (on the percentage scale), the 
y-axis of both plots can be set with the ylim option.  For example,

par(mfrow=c(1,2))
pop1<-rnorm(100)
hist(pop1,freq=F,ylim=c(0,1))
pop2<-rgamma(100,1,1)
hist(pop2,freq=F,ylim=c(0,1))

I'm using multhist(). The above would not work for me.

F





If your question were clearer, I might be able to help in more specific ways.

-tgs

On Fri, May 14, 2010 at 10:19 AM, Federico Calboli<f.calb...@imperial.ac.uk>  
wrote:
Hi All,

I am in the annoying position of having to present some data to someone who 
seems to be somewhat less than numerate. I need to label the y-axes of a 
multhist with the y-axis labeled not as counts but as percentage of a 
population. Plotting the standard histogram is in a way fine, all I need is to:

-- have a left-handside y-axis labels for pop 1 and a right-handside y-axis 
labels for pop2
-- replace the counts in each axis with population percentages (easy to 
calculate, but how to stick them there?)

Any suggestion would be gratefully received.

F


--
Federico C. F. Calboli
Department of Epidemiology and Biostatistics
Imperial College, St. Mary's Campus
Norfolk Place, London W2 1PG

Tel +44 (0)20 75941602   Fax +44 (0)20 75943193

f.calboli [.a.t] imperial.ac.uk
f.calboli [.a.t] gmail.com

______________________________________________
R-help@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.


--
Federico C. F. Calboli
Department of Epidemiology and Biostatistics
Imperial College, St. Mary's Campus
Norfolk Place, London W2 1PG

Tel +44 (0)20 75941602   Fax +44 (0)20 75943193

f.calboli [.a.t] imperial.ac.uk
f.calboli [.a.t] gmail.com








--
Federico C. F. Calboli
Department of Epidemiology and Biostatistics
Imperial College, St. Mary's Campus
Norfolk Place, London W2 1PG

Tel +44 (0)20 75941602   Fax +44 (0)20 75943193

f.calboli [.a.t] imperial.ac.uk
f.calboli [.a.t] gmail.com

______________________________________________
R-help@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.



--
Peter Ehlers
University of Calgary

______________________________________________
R-help@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.

Reply via email to