Shelby Berkowitz
2005-Mar-05 16:42 UTC
[R] Problem with plotting size/location on variation of star/segment plot
Dear R gurus, I'm running into a problem with some modified segment plots I've coded using stars(). What I am trying to do is superimpose two series of data along with radial axes markers in a 2x2 graphics frame. This is working fine now, except for the hitch: my plots overfill the frame and are not centered within it (on my runs they always end up looking like they've been budged up and to the left). They're also a little warped-looking (more oval than perfectly round). - I don't think this is a problem with my par() settings, as I've checked them out and they don't look suspicious. Also, I've tested generating other plots (e.g., dummy histograms) on the same device and they fit perfectly. It's also not a problem with fitting stars() plots into a par(mfrow=c(2,2) frame, as I get the same offset/overflow when I run just one plot on a mfrow=c(1,1) frame. - I don't think it's a problem with the windows graphics device, as I tried plotting to other devices (e.g., postscript) and get the same results. - Thus, I'm pretty sure this comes down to something funky with the way I'm using stars(). My runs of examples from stars() fit just as they should inside their graphics frames, but as far as I can see, the individual calls to stars() below don't look materially different from the ones in the examples. At this point, I'm completely stumped. Can someone please point me towards what I might be doing wrong here? Any and all advice will be most humbly appreciated! BTW, I'm running R 2.00 on Windows XP, all packages updated. Example version of my code is pasted below (the loop is for example purposes only): ##begin sample code par(mfrow=c(2,2)) for (i in 1:4) { ## generate sample data for plot: a<- sample(c(20:70)*.01,18) testA <- as.data.frame(rbind(a,a+((1-a)*sample(c(1:10)*.1,18,replace=T)))) ## open new plot space plot.new() ## plot data series: stars(testA[2,], locations=0:1,full = TRUE, scale = F, draw.segments=TRUE, add=TRUE,col.segments=heatshades[7]) stars(testA[1,], locations=0:1,full = TRUE, scale = F, draw.segments=TRUE, add=TRUE,col.segments=heatshades[3]) majgrid <- matrix(rep((c(1:10)*.1),ncol(testA)),nrow=10,byrow=F) ## generate and plot radar grid: mingrid <- matrix(rep((c(1:10)*.1-.05),ncol(testA)),nrow=10,byrow=F) stars(majgrid, locations=0:1, scale=F, draw.segments = TRUE, add=T, lty=1, col.segments=0) stars(mingrid, locations=0:1, scale=F, draw.segments = TRUE, add=T, lty=2, col.segments=0)} par(mfrow=c(1,1)) ##end sample code Thank you, Shelby ==============================Shelby L. Berkowitz Ecological-Community Psychology and Institute for Health Care Studies Michigan State University berkowi4 at msu.edu
Uwe Ligges
2005-Mar-05 18:49 UTC
[R] Problem with plotting size/location on variation of star/segment plot
Shelby Berkowitz wrote:> Dear R gurus, > > I'm running into a problem with some modified segment plots I've coded > using stars(). What I am trying to do is superimpose two series of data > along with radial axes markers in a 2x2 graphics frame. This is working > fine now, except for the hitch: my plots overfill the frame and are not > centered within it (on my runs they always end up looking like they've > been budged up and to the left). They're also a little warped-looking > (more oval than perfectly round). > > - I don't think this is a problem with my par() settings, as I've > checked them out and they don't look suspicious. Also, I've tested > generating other plots (e.g., dummy histograms) on the same device and > they fit perfectly. It's also not a problem with fitting stars() plots > into a par(mfrow=c(2,2) frame, as I get the same offset/overflow when I > run just one plot on a mfrow=c(1,1) frame. > - I don't think it's a problem with the windows graphics device, as I > tried plotting to other devices (e.g., postscript) and get the same > results. > - Thus, I'm pretty sure this comes down to something funky with the way > I'm using stars(). My runs of examples from stars() fit just as they > should inside their graphics frames, but as far as I can see, the > individual calls to stars() below don't look materially different from > the ones in the examples. > > At this point, I'm completely stumped. Can someone please point me > towards what I might be doing wrong here? Any and all advice will be > most humbly appreciated! > BTW, I'm running R 2.00 on Windows XP, all packages updated. > > Example version of my code is pasted below (the loop is for example > purposes only): > > ##begin sample code > par(mfrow=c(2,2)) > for (i in 1:4) { > ## generate sample data for plot: > a<- sample(c(20:70)*.01,18) > testA <- > as.data.frame(rbind(a,a+((1-a)*sample(c(1:10)*.1,18,replace=T)))) > ## open new plot space > plot.new() > ## plot data series: > stars(testA[2,], locations=0:1,full = TRUE, scale = F, > draw.segments=TRUE, add=TRUE,col.segments=heatshades[7])Well, since you have neither called plot.window() nor stars() with "add=FALSE"), the dimensions have not been set up correctly. In the first call above, simply say add = FALSE. Uwe Ligges> stars(testA[1,], locations=0:1,full = TRUE, scale = F, > draw.segments=TRUE, add=TRUE,col.segments=heatshades[3]) > majgrid <- matrix(rep((c(1:10)*.1),ncol(testA)),nrow=10,byrow=F) > ## generate and plot radar grid: > mingrid <- > matrix(rep((c(1:10)*.1-.05),ncol(testA)),nrow=10,byrow=F) > stars(majgrid, locations=0:1, scale=F, draw.segments = TRUE, > add=T, lty=1, col.segments=0) > stars(mingrid, locations=0:1, scale=F, draw.segments = TRUE, > add=T, lty=2, col.segments=0)} > par(mfrow=c(1,1)) > ##end sample code > > Thank you, > > Shelby > > ==============================> Shelby L. Berkowitz > Ecological-Community Psychology > and Institute for Health Care Studies > Michigan State University > berkowi4 at msu.edu > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html