Quantcast

lattice histogram log and non log values

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

lattice histogram log and non log values

LCOG1
Hello all,
  Please consider the following

library(lattice)
Colors. <-rep(brewer.pal(7, "Dark2"),2)
color <- 1

Data.X.. <- data.frame(UnitArea = c(rnorm(1000), rnorm(1000)), Type = c(rep("Base",1000),rep("Log",1000)))
               
                        histogram( ~ UnitArea |  Type, data = Data.X..,
          xlab = "Unit Area", type = "density",
          panel = function(x, ... ){
              panel.histogram(x, ...)
              panel.mathdensity(dmath = dnorm, col = "black",
                                args = list(mean=mean(x),sd=sd(x)))
          }, col = Colors.[color], layout = c(1, 2),
                   scales=list(log = c(F,T),tick.number=list(8), rot = c(0, 90),
                 x = list(relation = 'free')))

I want to plot on the same page distributions both observed values and the logged values.  I tried using the log parameter e.g. log = c(F,T) but I dont think this is right.    When I tried transforming the data before plotting the scales were all messed up. Guidance would be appreciated.  Thanks

Also, is there a way to simply plot multiple panels like the base graphics package using  par(new = TRUE) in the following?  It just replaces the first plot so maybe I shouldn't be trying to use the lattice package with the base graphics package.

#Set plot paramerters
par(mfrow=c(3,2), oma=c(3,3,3,3))

                #Base
                Data.X <- rnorm(100)
                histogram( ~ Data.X,
          xlab = "Unit Area (Log Transformed)", type = "density",
          panel = function(x, ...) {
              panel.histogram(x, ...)
              panel.mathdensity(dmath = dnorm, col = "black",
                                args = list(mean=mean(x),sd=sd(x)))
          }, col = Colors.[color], layout = c(1, 2))

           par(new = T)
                #Transform
                Data.X <- log( rnorm(1000))
                histogram( ~ Data.X,
          xlab = "Unit Area (Log Transformed)", type = "density",
          panel = function(x, ...) {
              panel.histogram(x, ...)
              panel.mathdensity(dmath = dnorm, col = "black",
                                args = list(mean=mean(x),sd=sd(x)))
          }, col = Colors.[color], layout = c(1, 2))
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate
star

Re: lattice histogram log and non log values

Deepayan Sarkar
On Thu, Jun 28, 2012 at 2:41 AM, LCOG1 <[hidden email]> wrote:

> Hello all,
>  Please consider the following
>
> library(lattice)
> Colors. <-rep(brewer.pal(7, "Dark2"),2)
> color <- 1
>
> Data.X.. <- data.frame(UnitArea = c(rnorm(1000), rnorm(1000)), Type =
> c(rep("Base",1000),rep("Log",1000)))
>
>                        histogram( ~ UnitArea |  Type, data = Data.X..,
>          xlab = "Unit Area", type = "density",
>          panel = function(x, ... ){
>              panel.histogram(x, ...)
>              panel.mathdensity(dmath = dnorm, col = "black",
>                                args = list(mean=mean(x),sd=sd(x)))
>          }, col = Colors.[color], layout = c(1, 2),
>                   scales=list(log = c(F,T),tick.number=list(8), rot = c(0, 90),
>                 x = list(relation = 'free')))
>
> I want to plot on the same page distributions both observed values and the
> logged values.  I tried using the log parameter e.g. log = c(F,T) but I dont
> think this is right.    When I tried transforming the data before plotting
> the scales were all messed up. Guidance would be appreciated.  Thanks

The latter would be the better approach. You haven't given code, but
you probably didn't add 'breaks=NULL', and without it all panels will
have a common set of breakpoints, so scales effectively will be the
same in all panels.

This works for me:

xx <- exp(rnorm(1000))

DF <- data.frame(UnitArea = c(xx, log(xx)),
                 Type = c(rep("Base",1000), rep("Log",1000)))

histogram( ~ UnitArea |  Type, data = DF,
          xlab = "Unit Area", type = "density",
          panel = function(x, ... ){
              panel.histogram(x, ...)
              panel.mathdensity(dmath = dnorm, col = "black",
                                args = list(mean=mean(x), sd=sd(x)))
          },
          breaks = NULL,
          col = Colors.[color], layout = c(1, 2),
          scales = list(x = list(relation = 'free')))


> Also, is there a way to simply plot multiple panels like the base graphics
> package using  par(new = TRUE) in the following?  It just replaces the first
> plot so maybe I shouldn't be trying to use the lattice package with the base
> graphics package.

Yes, see ?plot.trellis.

-Deepayan

______________________________________________
[hidden email] 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.
Loading...