[R] Ternaryplot as an inset graph

Ben Bolker bbolker at gmail.com
Fri Apr 20 18:05:14 CEST 2012

Young, Jennifer A <Jennifer.Young <at> dfo-mpo.gc.ca> writes:

> I am trying to add a ternary plot as a corner inset graph to a larger
> main ternary plot. I have successfully used add.scatter in the past for
> different kinds of plots but It doesn't seem to work for this particular
> function. It overlays the old plot rather than plotting as an inset.
> Here is a simple version of what I'm trying. Note that if I change the
> inset plot to be an ordinary scatter, for instance, it works as
> expected.
> library(ade4)
> library(vcd)
> tdat <- data.frame(x=runif(20), y=rlnorm(20), z=rlnorm(20))
> insetPlot <- function(data){
>   ternaryplot(data)
> }
> ternaryplot(tdat)
> add.scatter(insetPlot(tdat), posi="topleft", ratio=.2)

  I think the problem is that add.scatter assumes you're using base
graphics, while ternaryplot() uses grid graphics.  Mixing and
matching grid+base graphs is a little bit tricky.  You might try it with
triax.plot() from the plotrix package, which I believe does ternary
plots in base graphics ...

  Ben Bolker

More information about the R-help mailing list