[R] Introducing \n's so that par.strip.text can produce multiline strips in lattice

Dennis Murphy djmuser at gmail.com
Thu Nov 17 11:37:33 CET 2011


Hi:

This worked for me - I needed to modify some of the strip labels to
improve the appearance a bit and also reduced the strip font size a
bit to accommodate the lengths of the strings. The main thing was to
change \\n to \n.

Firstly, I created a new variable called Indic as a character variable
and then did some minor surgery on three of the strings:

Indic <- as.character(imports$Indicator)
Indic[3 + 6 *(0:5)] <- "Chemicals and related\n   products imports"
Indic[4 + 6 *(0:5)] <- "Pearls, semiprecious &\nprecious stones imports"
Indic[5 + 6 *(0:5)] <- "Metaliferrous ores &\nmetal scrap imports"

# Read Indic into the imports data frame as a factor:
imports$Indic <- factor(Indic)

# Redo the plot:
barchart(X03/1000 ~ time | Indic,
         data = imports[which(imports$time != 1), ],
         horiz = FALSE,
         scales = list(x = list(rot=45, labels=paste("Mar",2007:2011))),
         par.strip.text=list(lineheight=1, lines=2, cex = 0.8))

Dennis

On Wed, Nov 16, 2011 at 11:25 PM, Ashim Kapoor <ashimkapoor at gmail.com> wrote:
> Dear all,
>
> I have the following data, which has \\n in place of \n. I introduced \n's
> in the csv file so that I could use it in barchart in lattice. When I did
> that and read it into R using read.csv, it read it as \\n. My question is
> how do I introduce "\n" in the middle of a long string of quoted text so
> that lattice can make multiline strips. Hitting Enter which is supposed to
> introduce \n's does'nt work because when I goto the middle of the line and
> press enter Open Office thinks that I am done with editing my text and
> takes me to the next line.
>
>
>> dput(imports)
> structure(list(Indicator = structure(c(5L, 4L, 2L, 12L, 8L, 7L,
> 5L, 4L, 2L, 12L, 8L, 7L, 5L, 4L, 2L, 12L, 8L, 7L, 5L, 4L, 2L,
> 12L, 8L, 7L, 5L, 4L, 2L, 12L, 8L, 7L, 5L, 4L, 2L, 12L, 8L, 7L
> ), .Label = c("", "Chemicals and related\\n products imports",
> "Coal export", "Gold imports", "Gold & silver imports", "Iron ore export",
> "Iron & steel imports", "Metaliferrous ores & metal scrap imports",
> "Mica export", "Ores & minerals\\nexport", "Other ores &\\nminerals
> export",
> "Pearls precious &\\n semiprecious stones imports", "Processed minerals\\n
> export"
> ), class = "factor"), Units = structure(c(2L, 2L, 2L, 2L, 2L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("",
> "Rs.crore"), class = "factor"), Expression = structure(c(2L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
> 2L, 2L, 2L), .Label = c("", "Ival"), class = "factor"), time = c(7,
> 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10,
> 10, 10, 10, 11, 11, 11, 11, 11, 11, 1, 1, 1, 1, 1, 1), X03 = c(66170.46,
> 65337.72, 62669.86, 33870.17, 36779.35, 27133.25, 71829.14, 67226.04,
> 75086.89, 29505.61, 31750.99, 32961.26, 104786.39, 95323.8, 134276.63,
> 76263, 36363.61, 41500.36, 140440.36, 135877.91, 111269.69, 76678.27,
> 36449.89, 36808.06, 162253.77, 154346.72, 124895.76, 142437.03,
> 42872.16, 43881.85, 109096.024, 103622.438, 101639.766, 71750.816,
> 36843.2, 36456.956), id = c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L,
> 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L,
> 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L)), row.names = c("1.7",
> "2.7", "3.7", "4.7", "5.7", "6.7", "1.8", "2.8", "3.8", "4.8",
> "5.8", "6.8", "1.9", "2.9", "3.9", "4.9", "5.9", "6.9", "1.10",
> "2.10", "3.10", "4.10", "5.10", "6.10", "1.11", "2.11", "3.11",
> "4.11", "5.11", "6.11", "1.1", "2.1", "3.1", "4.1", "5.1", "6.1"
> ), .Names = c("Indicator", "Units", "Expression", "time", "X03",
> "id"), class = "data.frame", reshapeLong = structure(list(varying =
> structure(list(
>    X03 = c("X03.07", "X03.08", "X03.09", "X03.10", "X03.11",
>    "X03.1")), .Names = "X03", v.names = "X03", times = c(7,
> 8, 9, 10, 11, 1)), v.names = "X03", idvar = "id", timevar = "time"), .Names
> = c("varying",
> "v.names", "idvar", "timevar")))
>>
>
> On which I want to run
>
> barchart(X03/1000~time|Indicator,
>         data=imports[which(imports$time!=1),],
>         horiz=F,
>         scales=list(x=list(rot=45,labels=paste("Mar",2007:2011))),
>         par.strip.text=list(lineheight=1,lines=2))
>
> Many thanks,
> Ashim.
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>



More information about the R-help mailing list