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