[R] How to add lines to lattice plot produced by rms::bplot
David Winsemius
dwinsemius at comcast.net
Sat Aug 14 05:42:27 CEST 2010
On Aug 13, 2010, at 11:25 PM, Duncan Mackay wrote:
> Hi David
>
> I do not know if you have done something like this.
I had tried a few efforts like that, starting with an examination of
str(bp.plot) as you demonstrate.
> I tried str(bp.plot) which gave the section about the regions (for
> colours) as:
> $ panel.args.common:List of 8
> ..$ x : num [1:2500] 27 28 29 29.9 30.9 ...
> ..$ y : num [1:2500] 141 141 141 141 141 ...
> ..$ z : num [1:2500] -1.43 -1.41 -1.39 -1.36 -1.34 ...
> ..$ at : num [1:10] -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5
> ..$ region : logi FALSE
> ..$ zlab :List of 3
> .. ..$ label: chr "log odds"
> .. ..$ rot : num 90
> .. ..$ cex : num 1
> ..$ labels : logi TRUE
> ..$ contour: logi TRUE
I tried (with a bplot object named "bldLT40"):
bldLT40$legend$right$args$key$at <- c(-0.233, seq(.50, 2.25, by=0.25),
seq(2.5, 5.0, by=0.5), 6:10)
... and then tried
bldLT40$panel.args$at <- c(-0.233, seq(.50, 2.25, by=0.25), seq(2.5,
5.0, by=0.5), 6:10)
Neither of these efforts changed the boundaries beteen colors in the
plot area. The first effort changed the legend scal,e but that just
created a "misalignment" of the colors of plot area and the legend. I
would be interested in either a strategy that lets one alter the color
level changes of the z variable (which in bplot-created objects is
"zhat", or lets one specify the values at which contour lines are
drawn in contourplot.
Thanks for your efforts.
--
David.
>
> I added the col.region and colours from a plot levelplot that I had
> done to see what would occur to the trellis parameters. No colours
> were produced when plotted.
> bp.plot <- bplot(p, lfun=contourplot, color.key = TRUE, col.regions
> =
> c
> ("#FFFFFF
> ","#00FFFF","#A9E2FF","#8080FF","#0000FF","#FFD18F","#FF0000") )
>
> $ panel.args.common:List of 10
> ..$ x : num [1:2500] 27 28 29 29.9 30.9 ...
> ..$ y : num [1:2500] 141 141 141 141 141 ...
> ..$ z : num [1:2500] -1.43 -1.41 -1.39 -1.36 -1.34 ...
> ..$ at : num [1:10] -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5
> ..$ region : logi FALSE
> ..$ color.key : logi TRUE
> ..$ zlab :List of 3
> .. ..$ label: chr "log odds"
> .. ..$ rot : num 90
> .. ..$ cex : num 1
> ..$ labels : logi TRUE
> ..$ contour : logi TRUE
> ..$ col.regions: chr [1:7] "#FFFFFF" "#00FFFF" "#A9E2FF"
> "#8080FF" ...
>
> So it has been added to the panel.args.common, whether you can
> access these are another matter.
>
> I then tried
> bp.plot <- bplot(p, lfun=contourplot, par.settings = list(axis.text
> = list(cex = 0.65)), color.key = TRUE, col.regions =
> c
> ("#FFFFFF
> ","#00FFFF","#A9E2FF","#8080FF","#0000FF","#FFD18F","#FF0000") )
>
> which changed the size of the axis text so it may be the case of
> having to add the col.regions etc to the appropriate list in
> par.settings
>
> I'll leave you to amend and access the colours.
> You may have to add values for the wireframe/levelplot arguments
> like "at" etc. and col.regions (I think that is the function) to
> produce an appropriate colour range of your choice
>
> It is a while since I have delved into these sorts of plots.
> Need some sustenance.
>
> Regards
>
> Duncan
>
> Duncan Mackay
> Department of Agronomy and Soil Science
> University of New England
> ARMIDALE NSW 2351
> Email home: mackay at northnet.com.au
>
>
>
> At 10:33 14/08/2010, you wrote:
>
>> I have a plot produced by function bplot (package = rms) that is
>> really a lattice plot (class="trellis"). It is similar to this plot
>> produced by a very minor modification of the first example on the
>> bplot help page:
>>
>> require(rms)
>> n <- 1000 # define sample size
>> set.seed(17) # so can reproduce the results
>> age <- rnorm(n, 50, 10)
>> blood.pressure <- rnorm(n, 120, 15)
>> cholesterol <- rnorm(n, 200, 25)
>> sex <- factor(sample(c('female','male'), n,TRUE))
>> label(age) <- 'Age' # label is in Hmisc
>> label(cholesterol) <- 'Total Cholesterol'
>> label(blood.pressure) <- 'Systolic Blood Pressure'
>> label(sex) <- 'Sex'
>> units(cholesterol) <- 'mg/dl' # uses units.default in Hmisc
>> units(blood.pressure) <- 'mmHg'
>>
>> # Specify population model for log odds that Y=1
>> L <- .4*(sex=='male') + .045*(age-50) +
>> (log(cholesterol - 10)-5.2)*(-2*(sex=='female') + 2*(sex=='male'))
>> # Simulate binary y to have Prob(y=1) = 1/[1+exp(-L)]
>> y <- ifelse(runif(n) < plogis(L), 1, 0)
>>
>> ddist <- datadist(age, blood.pressure, cholesterol, sex)
>> options(datadist='ddist')
>>
>> fit <- lrm(y ~ blood.pressure + sex * (age + rcs(cholesterol,4)),
>> x=TRUE, y=TRUE)
>> p <- Predict(fit, age, cholesterol, sex='male', np=50) # vary sex
>> last
>> bp.plot <- bplot(p, lfun=contourplot)
>> bp.plot
>>
>> I have tried a variety of efforts at using update (which I assume
>> is a
>> lattice function although I can find no help page for it. It does
>> appear in some of the lattice hep pages and my understanding is that
>> it pushes objects onto the list structure of a plot object. I've also
>> tried adding to it with llines()
>> #-------------
>> Oh, never mind. I recovered a memory that I had seen a solution on
>> rhelp and had saved it. Turns out it was from Peter Ehlers, to whom I
>> offer thanks. I was trying to add a step function: ht and weight from
>> a dataframe, "bld":
>>
>> trellis.focus("panel", 1, 1)
>> panel.lines(x=bld$inches, y=bld$BMI28, type='s')
>> trellis.unfocus()
>>
>> Success!
>>
>> Now... how do I control the color levels in levelplot or
>> contourplot???
>>
>>
>> David Winsemius, MD
>> West Hartford, CT
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list