s-news
[Top] [All Lists]

[S] graphical displays of correlation matrices

To: s-news@wubios.wustl.edu
Subject: [S] graphical displays of correlation matrices
From: matthew.a.kurbat@ncmi.com
Date: Wed, 26 Jan 2000 09:53:59 -0500
Sender: owner-s-news@wubios.wustl.edu

HERE IS A FOLLOWUP ON MY POSTING.
THANK YOU TO EVERYONE WHO REPLIED:
-MATT KURBAT
------------------------------------------------------


        > 
        > Dear Splus Users,
        > 
        > Murdoch and Chow (1996) present a way to display large correlation
        > matrices graphically.  The article mentions that statlib contains
a copy
        > of their splus code, but I could not find it.  Does anyone have it
or
        > know what it's called/where to find it?  The reference is:
        >       Murdoch and Chow (1996). A graphical display of large
correlation
        >       matrices.  American Statistician.


        Why not ask the authors?
Brian D. Ripley,                  ripley@stats.ox.ac.uk


I DID NOT KNOW HOW TO CONTACT THE AUTHORS.
AS IT TURNS OUT, ONE CONTACTED ME:

It's called ellipse.shar.  You'll likely run into trouble installing
it in current SPLUS versions; they regularly change the Postscript
device drivers, and I haven't updated the software since the original
version.

A version is currently being ported to R, by Jesús María Frías
Celayeta <iosu@ensia.inra.fr>. You might want to contact him to find
out if it's available yet.

Duncan Murdoch
dmurdoch@pair.com



OTHER POSTINGS:

You could just use image() to look at a correlation matrix. 
I don't know what M &C do but that seems useful. I know better methods do
exist, esp methods or changing row and column order. 

                SDB
S.D.Byers [byers@research.att.com]




Christian Keller [ckeller@aicos.com] MENTIONED A RELATED ROUTINE
TO DRAW SINGLE ELLIPSE.  HERE ARE SUMMARIES OF THIS AND OTHERS:


Biggerstaff, Brad J. [bkb5@cdc.gov]
Wed 5/19/99 11:05 AM


Here's a function to draw an ellipse, with the option to fill it in or just
get the coordinates of the points.

It's an extension of a function of John Wallace I got from S-news some years
ago.

Cheers,
Brad

Brad Biggerstaff, Ph.D.
Centers for Disease Control and Prevention
National Center for Infectious Diseases
Division of Vector-Borne Infectious Diseases
P.O. Box 2087
Fort Collins, CO  80522-2087   U.S.A.
(970) 221-6473              bkb5@cdc.gov


===================================================
"ellipse"<-
function(cx, cy, rx, ry, theta = 0, yaxis = T, pointsonly = F, fill = F,
...)
{
# function to plot an ellipse with center (cx,cy)
# and major axis/2 along x equal to rx, 
# major axis/2 along y equal to ry
# and rotated through an angle theta (in radians)
# note that a circle is obtained with rx=ry, 
# in which case theta isn't very helpful either
#
# the parameter yaxis adjusts the size correct in the
# y- or x-axis, as plotting is generally not square
# ...so using par(pty="s") will eliminate the need for this
#
# the parameter pointsonly determines if a plot is
# added-to or the values of the points are returned
# in a list
#
# fill is a flag to indicate filling in the ellipse
#
# ... is useful for arguments to polygon, such as color 
#     and density
#
# this is an adjustment by Brad Biggerstaff 
# on 27 April 1999 to the funtion circle() written
# by John R. Wallace, as noted below
#
# the original function was obtained from S-news
#
# Brad Biggerstaff (bkb5@cdc.gov)
# May, 1999
#
#   cx, cy, coordinates for centre; r is radius
#   yaxis = T, radius is correct on the y axis
#   yaxis = F, radius is correct on the x axis    
#   DATE WRITTEN:  1994      LAST REVISED:   17 July 1995
#   AUTHOR:  John R. Wallace (jw@u.washington.edu)
#
#
        z <- (0:360 * pi)/180
        pin <- par()$pin
        usr <- par()$usr
        adj <- (pin[2]/pin[1])/((usr[4] - usr[3])/(usr[2] - usr[1]))
        if(yaxis) {
                x <- sin(z) * rx * adj
                y <- cos(z) * ry
        }
        else {
                x <- sin(z) * rx
                y <- (cos(z) * ry * 1)/adj
        }
        xprime <- x * cos(theta) + y * sin(theta) + cx
        yprime <- y * cos(theta) - x * sin(theta) + cy
        if(!pointsonly) {
                if(fill)
                        density <- -1
                else density <- 0
                polygon(xprime, yprime, density = density, ...)
                invisible()
        }
        else list(x = xprime, y = yprime)
}






John Wallace [jrw@fish.washington.edu]
Wed 5/19/99 1:07 PM
[S] Another circle program


<Prev in Thread] Current Thread [Next in Thread>
  • [S] graphical displays of correlation matrices, matthew . a . kurbat <=