[R] Combined plot: Scatter + density plot
Gaj Vidmar
gaj.vidmar at mf.uni-lj.si
Tue Sep 21 11:47:29 CEST 2010
You can get exactly the plot you want (except with relative frequency
polygons instead of the histograms on the marginals, but they are
equivalent) with the package
chplot
(which is available from CRAN)!
Use just one group (class, sample, category -- i.e., omit the "conditioning
variable" as we call it in the package manual) and use the options to show
the points and to switch off the convex hull and the display of centre and
variability (if you really want to, although multiple groups and the
summarised display are the main features of the "augmented convex hull
plots"). Still, if you have many points, do consider the "chplots proper",
or their "curved variant" (i.e., bivariate density contour instead of the
points cloud and confidence ellipse instead of the cross with descriptive
statistics and smoothed marginal densities instead of the frequency
poligons).
Regards, Gaj
---
Assist. Prof. Gaj Vidmar, PhD
Univ. of Ljubljana, Fac. of Medicine, Inst. for Biostatistics and Medical
Informatics
"Ralf B" <ralf.bierig at gmail.com> wrote in message
news:AANLkTikJv_NUPQT2E2BtAJkji3q9oabgSv+UoKpqpN-J at mail.gmail.com...
> Hi,
>
> in order to save space for a publication, it would be nice to have a
> combined scatter and density plot similar to what is shows on
>
> http://addictedtor.free.fr/graphiques/RGraphGallery.php?graph=78
>
> I wonder if anybody perhaps has already developed code for this and is
> willing to share. This is the reproducible code for the histogram
> version obtained from the site:
>
> def.par <- par(no.readonly = TRUE) # save default, for resetting...
> x <- pmin(3, pmax(-3, rnorm(50)))
> y <- pmin(3, pmax(-3, rnorm(50)))
> xhist <- hist(x, breaks=seq(-3,3,0.5), plot=FALSE)
> yhist <- hist(y, breaks=seq(-3,3,0.5), plot=FALSE)
> top <- max(c(xhist$counts, yhist$counts))
> xrange <- c(-3,3)
> yrange <- c(-3,3)
> nf <- layout(matrix(c(2,0,1,3),2,2,byrow=TRUE), c(3,1), c(1,3), TRUE)
> par(mar=c(3,3,1,1))
> plot(x, y, xlim=xrange, ylim=yrange, xlab="", ylab="")
> par(mar=c(0,3,1,1))
> barplot(xhist$counts, axes=FALSE, ylim=c(0, top), space=0)
> par(mar=c(3,0,1,1))
> barplot(yhist$counts, axes=FALSE, xlim=c(0, top), space=0, horiz=TRUE)
>
> par(def.par)
>
> I am basically stuck from line 6 where the bin information from the
> histogram is used for determining plotting sizes. Density are
> different and don't have (equal) bins and their size would need to be
> determined differently. I wonder if somebody here has created such a
> diagram already and is willing to share ideas/code/pointers to similar
> examples. Your effort is highly appreciated.
>
> Thanks a lot,
> Ralf
>
More information about the R-help
mailing list