Lattice stacked barplot vertical bars

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Lattice stacked barplot vertical bars

Luigi
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)
    )
)

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Lattice stacked barplot vertical bars

Duncan Mackay-4
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:[hidden email]] 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)
    )
)

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

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Lattice stacked barplot vertical bars

Luigi
Yes, perfect!
Thank you
L

On Fri, Sep 22, 2017 at 2:48 PM, Duncan Mackay <[hidden email]> 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:[hidden email]] 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)
>     )
> )
>
> ______________________________________________
> [hidden email] 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.
>

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