[Rd] interaction.plot

Martin Maechler maechler at stat.math.ethz.ch
Wed Aug 11 19:14:17 CEST 2004

>>>>> "ChrBu" == Christoph Buser <buser at stat.math.ethz.ch>
>>>>>     on Fri, 6 Aug 2004 10:24:40 +0200 writes:

    ChrBu> Dear R core team I've a proprosal to improve the
    ChrBu> function interaction.plot. It should be allowed to
    ChrBu> use type = "b". 

thank you for the suggestion.
I've implemented the above for R-devel several days ago.

    ChrBu> This can be done by changing the function's header from

    ChrBu> function( , type = c("l", "p"), )

    ChrBu> to

    ChrBu> function( , type = c("l", "p", "b"), )

    ChrBu> Then it works. 

well, as I mentioned to you privately, it also needs a change
in the legend() call subsequently.

    ChrBu> This type = "b" is useful, if the second level of the
    ChrBu> x.factor is missing for some level of the
    ChrBu> trace.factor. With type= "l" you loose first level of
    ChrBu> the x.factor, too (because you can't draw the line to
    ChrBu> the missing second level). With type = "p" so see
    ChrBu> this first level, but you have no lines at all (just
    ChrBu> chaos with points). With type = "b", you get all
    ChrBu> existing levels plus the lines between two contiguous
    ChrBu> levels (if they both exist).

    ChrBu> There is a second point. Using interaction.plot with
    ChrBu> the additional argument main creates a warning:

    ChrBu> parameter "main" couldn't be set in high-level plot() function

    ChrBu> The reason is that "..." is used twice inside of
    ChrBu> interaction.plot, in fact in

    ChrBu> matplot( ,...)

    ChrBu> and in

    ChrBu> axis( ,...)

    ChrBu> axis can do nothing with this argument main and
    ChrBu> creates this warning. You could replace ,... in the
    ChrBu> axis function by inserting all reasonable arguments
    ChrBu> of axis in the functions header (interaction.plot)
    ChrBu> and give over those arguments to axis. Then you
    ChrBu> shouldn't get this warning anymore.

yes, indeed.

Note however that this warning also happens with other such plotting
functions and I find it is not a real blemish.
Your proposed solution is not so obvious or easy, since 
axis() really has its own ``intrinsic'' ... argument and
conceptually does accept many more possible "graphical
parameters" in addition to its specific ones.

Hence I believe it would need quite a large extent of extra code
in order to
1) keep the current potential functionality
2) always properly separate arguments to be passed to matplot()
   from those to be passed to axis().

-- and as ``we all know'' we should really use lattice package
   functions rather than interaction.plot() 
   {but then I'm still not the role model here ... ;-( }


More information about the R-devel mailing list