Skip to content

Dotchart showing mean and median by group

10 messages · Massimo Bressan, Tal Galili, Gabor Grothendieck +1 more

#
Given this example

mean.values<-colMeans(VADeaths)

mean.values<-apply(VADeaths, 2, mean)
median.values<-apply(VADeaths, 2, median)

dotchart(VADeaths, gdata=mean.values)
dotchart(VADeaths, gdata=median.values)

is it possible to ?combine? a single dotchart showing both the mean and the
median for each single group (with different plotting symbols)?

?is it that possible with the use of the standard graphics or it is
necessary (better) to use of a different package? 

Any example for this in my favourite (even almost always too much complex
for myself) package lattice?

thank you

--
View this message in context: http://r.789695.n4.nabble.com/Dotchart-showing-mean-and-median-by-group-tp4619597.html
Sent from the R help mailing list archive at Nabble.com.
#
On Wed, May 9, 2012 at 3:25 AM, maxbre <mbressan at arpa.veneto.it> wrote:
Try this:

dotchart(VADeaths, gdata=mean.values)
par(new = TRUE)
dotchart(VADeaths, gdata=median.values, gpch = 20)
#
On Wed, May 9, 2012 at 5:32 PM, Tal Galili <tal.galili at gmail.com> wrote:
On my Windows system it looks ok to me but if you want to eliminate
the overwriting this will suppress the mtext and axis annotations on
the first dotchart call.

library(proto)
p <- proto(dotchart = dotchart, mtext = list, axis = list)
with(p, dotchart(VADeaths, gdata = mean.values))
par(new = TRUE)
dotchart(VADeaths, gdata = median.values, pch = 20)
#
hi all

I have another question reated to the dotchart: is it possible by means of
par() to set a logaritmic scale? 
If yes, how ? and if not, any alternative solution?

thanks

--
View this message in context: http://r.789695.n4.nabble.com/Dotchart-showing-mean-and-median-by-group-tp4619597p4622618.html
Sent from the R help mailing list archive at Nabble.com.
#
On May 10, 2012, at 2:24 AM, maxbre wrote:

            
Looking at the dotchart code it appears to me that the log parameter  
to plot.window is hard-coded at "", i.e both scales are linear.  
Testing with the xlog parameter to par does fail.  You can always  
define a new dochart2 on the basis of that code.
#
On May 10, 2012, at 5:03 AM, David Winsemius wrote:

            
Another alternative would be lattice (a simple mod to one of its  
examples shows it "works"):

dotplot(variety ~ yield | site, data = barley, groups = year,
         key = simpleKey(levels(barley$year), space = "right"),  
scales=list(x=list(log=TRUE)),
         xlab = "Barley Yield (bushels/acre) ",
         aspect=0.5, layout = c(1,6), ylab=NULL)

  
    
#
On Thu, May 10, 2012 at 2:24 AM, maxbre <mbressan at arpa.veneto.it> wrote:
1. This is getting increasingly complicated as new requirements are
added but anyways here it is.  As before, for the first dotchart call
we substitute in our own dotchart (which is the same as R's dotchart
except its environment is reset to p so that it picks up anything in p
prior to similarly named functions elsewhere in R).  This time we also
add our own plot.window to p overriding log=.  The line marked ## is
optional and suppresses writing the axis annotations a second time.
As before, this code depends on the internals of dotchart so its not
ideal and you might wish to turn to lattice or ggplot 2 but it does
give the desired effect while sticking to classic graphics.

library(proto)

p <- proto(dotchart = dotchart,
	plot.window = function(..., log) graphics::plot.window(..., log = "x"))
with(p, dotchart(VADeaths, gdata = mean.values))

par(new = TRUE)

p[["axis"]] <- p[["mtext"]] <- list ##
with(p, dotchart(VADeaths, gdata = median.values, gpch = 20))

2. A variation is to use dotchart2 in Hmisc.   It has a version of
dotchart that directly supports adding to the plot.  Omit the
suppressWarnings call below if you don't mind a few spurious warnings.

library(Hmisc)

groups <- col(VADeaths, as.factor = TRUE)
labels <- rownames(VADeaths)[row(VADeaths)]

suppressWarnings({
  dotchart2(VADeaths, labels = labels, groups = groups,
    gdata = mean.values, log = "x")

  dotchart2(VADeaths, labels = labels, groups = groups,
    gdata = median.values, log = "x", pch = 1, add = TRUE)
})
#
thank you  all for the high level contributions and the very helpful
feedback;

I think I have now enogh material to study for months: what a good lesson
learned!

cheers

max 

--
View this message in context: http://r.789695.n4.nabble.com/Dotchart-showing-mean-and-median-by-group-tp4619597p4623526.html
Sent from the R help mailing list archive at Nabble.com.