Skip to content

changing settings on a barchart (lattice)

2 messages · Dimitri Liakhovitski, Dieter Menne

#
Hello!

I apologize - I never used lattice before, so my question is probably
very basic - but I just can't find the answer in the archive nor in
the documentation:

I have a named numeric vector p of 6 numbers (of the type 6 numbers
with people's names to whom those numbers belong). I want a simple bar
chart.

I am doing:

library(lattice)
trellis.par.set(fontsize=list(text=12))      # Changes only axes font
barchart(~sort(p),main="Text for main",xlab="Text for X axis",
col=PrimaryColors[3])

It works just fine.
Question: Where how can I change such things as font size for X axis
label (below the numbers), font size for Title, value labels (to label
bars with actual numbers), add grids, etc.?

Thanks a lot!
#
Dimitri Liakhovitski <ld7631 <at> gmail.com> writes:
Finding the right settings in lattice is a bit of intelligent guesswork.
Here my sequence:

0) show.settings() # rather incomplete
1) str(trellis.par.get()) # names are quite rational, so this is 80% success
2) browse Deepayan's book examples
  http://lmdvr.r-forge.r-project.org/figures/figures.html

After you got the right settings, keep these well wrapped for 
further use, for example by defining you own default theme. 

I noted your PrimaryColor which made the example less self-consistant.
Check RColorBrewer and latticeExtra for a more standardize approach.

Dieter

"DMlatticeOptions" <- function(superpose.polygon.col=NULL,
                              superpose.line.col=NULL) {
  require(lattice)
  require(RColorBrewer)
  ltheme = canonical.theme(color=TRUE)
  
  if (!is.null(superpose.polygon.col))
    ltheme$superpose.line$col =  superpose.line.col else
    ltheme$superpose.line$col =
      c('black',"red","blue","#e31111","darkgreen", "gray")
#  ltheme$superpose.line$col = rev(brewer.pal(8,"Set1"))
  ltheme$superpose.fill$col = ltheme$superpose.line$col
  if (!is.null(superpose.polygon.col))
    ltheme$superpose.polygon$col =  superpose.polygon.col
  ltheme$strip.shingle$col = ltheme$superpose.polygon$col

  ltheme$superpose.symbol$pch = c(16,17,18,1,2,3,4,8)
  ltheme$superpose.symbol$col = ltheme$superpose.line$col 
  ltheme$superpose.symbol$cex = 0.4
  ltheme$strip.background$col = c("gray90", "gray80")
  ltheme$background$col = "transparent"
  ltheme$par.main.text$cex = 0.9 # default is 1.2
  ltheme$par.ylab.text$cex =0.8
  ltheme$par.ylab.text$cex =0.8
  ltheme$add.text$cex = 1
  ltheme$axis.text$cex = 0.6
  ltheme$box.rectangle$col = "black"
  ltheme$box.umbrella$col = "black"
  ltheme$dot.symbol$col = "black"

  ltheme$plot.symbol$col = "black"
  ltheme$plot.line$col = "black"
  ltheme$plot.symbol$cex = 0.3
  ltheme$plot.symbol$pch = c(16)

  ltheme$plot.polygon$col = "#A6D96A"
  ltheme$par.sub.text$cex=0.7
  ltheme$par.sub.text$font=1
  
  lattice.options(default.theme=ltheme)
}