Dear all, I have made a barplot using lattice in which the bars are stacked horizontally. I would like to stack them vertically, but if I use the parameter 'horizontal = FALSE' I get the error: 'Error in FUN(X[[i]], ...) : invalid 'type' (character) of argument'. The problem I face is that, in drawing the bars vertically, the y variable becomes numeric rather than categorical and vice-versa for the x variable. How can I solve this issue? Thank you Luigi>>>A <- c('a', 'b', 'c', 'd', 'a', 'b', 'c', 'd', 'b', 'c', 'd', 'b', 'c', 'd') B <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) C <- c(0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) D <- c(4, 120, 7, 23, 4, 24, 3, 12, 7, 1, 1, 5, 0, 0) E <- c(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1) DF <- data.frame(A, B, C, D, E, stringsAsFactors = FALSE) library(lattice) barchart( A ~ D|E, DF, groups = C, stack = TRUE, horizontal = TRUE, main = "Comparison of test results", xlab = "Count", col = c("yellow", "orange"), par.settings = list( strip.background = list(col="light grey"), superpose.polygon=list(col= c("yellow", "orange")) ), scales = list( alternating = FALSE ), key = list( space="top", columns=2, text=list(c("Single infections", "Multiple infections"), col="black"), rectangles=list(col=c("yellow", "orange")) ), strip = strip.custom(factor.levels = c("Cases","Controls"), strip.levels=TRUE, strip.names=FALSE, par.strip.text = list(cex = 1) ) )
Hi Luigi
will this do
barchart(
D ~ A|E,
DF,
groups = C,
stack = TRUE,
horizontal = F,
main = "Comparison of test results",
xlab = "Count",
col = c("yellow", "orange"),
par.settings = list(
strip.background = list(col="light grey"),
superpose.polygon=list(col= c("yellow", "orange"))
),
scales = list(
alternating = FALSE
),
key = list(
space="top",
columns=2,
text=list(c("Single infections", "Multiple
infections"),
col="black"),
rectangles=list(col=c("yellow", "orange"))
),
strip = strip.custom(factor.levels =
c("Cases","Controls"),
strip.levels=TRUE,
strip.names=FALSE,
par.strip.text = list(cex = 1)
)
)
Too late to do anything more
Regards
Duncan Macka
-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Luigi
Marongiu
Sent: Friday, 22 September 2017 21:53
To: r-help
Subject: [R] Lattice stacked barplot vertical bars
Dear all,
I have made a barplot using lattice in which the bars are stacked
horizontally. I would like to stack them vertically, but if I use the
parameter 'horizontal = FALSE' I get the error: 'Error in
FUN(X[[i]],
...) : invalid 'type' (character) of argument'. The problem I face
is
that, in drawing the bars vertically, the y variable becomes numeric
rather than categorical and vice-versa for the x variable.
How can I solve this issue?
Thank you
Luigi
>>>
A <- c('a', 'b', 'c', 'd', 'a',
'b', 'c', 'd', 'b', 'c', 'd',
'b', 'c', 'd')
B <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
C <- c(0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1)
D <- c(4, 120, 7, 23, 4, 24, 3, 12, 7, 1, 1, 5, 0, 0)
E <- c(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1)
DF <- data.frame(A, B, C, D, E, stringsAsFactors = FALSE)
library(lattice)
barchart(
A ~ D|E,
DF,
groups = C,
stack = TRUE,
horizontal = TRUE,
main = "Comparison of test results",
xlab = "Count",
col = c("yellow", "orange"),
par.settings = list(
strip.background = list(col="light grey"),
superpose.polygon=list(col= c("yellow", "orange"))
),
scales = list(
alternating = FALSE
),
key = list(
space="top",
columns=2,
text=list(c("Single infections", "Multiple
infections"),
col="black"),
rectangles=list(col=c("yellow", "orange"))
),
strip = strip.custom(factor.levels =
c("Cases","Controls"),
strip.levels=TRUE,
strip.names=FALSE,
par.strip.text = list(cex = 1)
)
)
______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.
Yes, perfect! Thank you L On Fri, Sep 22, 2017 at 2:48 PM, Duncan Mackay <dulcalma at bigpond.com> wrote:> Hi Luigi > > will this do > > barchart( > D ~ A|E, > DF, > groups = C, > stack = TRUE, > horizontal = F, > main = "Comparison of test results", > xlab = "Count", > col = c("yellow", "orange"), > par.settings = list( > strip.background = list(col="light grey"), > superpose.polygon=list(col= c("yellow", "orange")) > ), > scales = list( > alternating = FALSE > ), > key = list( > space="top", > columns=2, > text=list(c("Single infections", "Multiple infections"), > col="black"), > rectangles=list(col=c("yellow", "orange")) > ), > strip = strip.custom(factor.levels = c("Cases","Controls"), > strip.levels=TRUE, > strip.names=FALSE, > par.strip.text = list(cex = 1) > ) > ) > > Too late to do anything more > > Regards > > Duncan Macka > > -----Original Message----- > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Luigi > Marongiu > Sent: Friday, 22 September 2017 21:53 > To: r-help > Subject: [R] Lattice stacked barplot vertical bars > > Dear all, > I have made a barplot using lattice in which the bars are stacked > horizontally. I would like to stack them vertically, but if I use the > parameter 'horizontal = FALSE' I get the error: 'Error in FUN(X[[i]], > ...) : invalid 'type' (character) of argument'. The problem I face is > that, in drawing the bars vertically, the y variable becomes numeric > rather than categorical and vice-versa for the x variable. > How can I solve this issue? > Thank you > Luigi > >>>> > > A <- c('a', 'b', 'c', 'd', 'a', 'b', 'c', 'd', 'b', 'c', 'd', 'b', 'c', 'd') > B <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) > C <- c(0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1) > D <- c(4, 120, 7, 23, 4, 24, 3, 12, 7, 1, 1, 5, 0, 0) > E <- c(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1) > DF <- data.frame(A, B, C, D, E, stringsAsFactors = FALSE) > library(lattice) > barchart( > A ~ D|E, > DF, > groups = C, > stack = TRUE, > horizontal = TRUE, > main = "Comparison of test results", > xlab = "Count", > col = c("yellow", "orange"), > par.settings = list( > strip.background = list(col="light grey"), > superpose.polygon=list(col= c("yellow", "orange")) > ), > scales = list( > alternating = FALSE > ), > key = list( > space="top", > columns=2, > text=list(c("Single infections", "Multiple infections"), > col="black"), > rectangles=list(col=c("yellow", "orange")) > ), > strip = strip.custom(factor.levels = c("Cases","Controls"), > strip.levels=TRUE, > strip.names=FALSE, > par.strip.text = list(cex = 1) > ) > ) > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. >