facet_wrap and grouped

--Hi,

i want to represent a data frame (see attachment) using a bar plot in a facet wrap style grouping by 'Refs'.
I have tried this code:

ggplot(sub, aes(y = as.numeric(EN1),
                x = libraries,
                group = Refs)) +
     geom_bar(stat = "identity", position = "dodge", aes(fill = Refs))

but i have only one column.

thank you --

Your strategy should be to make the data long, so that there is a variable that represents the facet strategy, and a single variable with the y values.

library(tidyverse)
(sub <- expand_grid(libraries=letters[1:2],
                    Refs=LETTERS[25:26]) |> mutate(EN1 = 1:4,
                                        EN2= 2:5))

# ggplot(sub, aes(y = as.numeric(EN1),
#                 x = libraries,
#                 group = Refs)) +
#   geom_bar(stat = "identity", position = "dodge", aes(fill = Refs)) 

(lsub <- pivot_longer(sub,cols = -c(libraries,Refs)))

ggplot(lsub, aes(x=libraries,
                 y=value,
                 fill=Refs))+
  geom_col(position="dodge") + facet_wrap(~name)

Hi,

yes it is a good solution but negative values are not well plotted, such as:
r - How to label a barplot bar with positive and negative bars with ggplot2 - Stack Overflow
Maybe i need to add some parameters ?

thank you --

Means what exactly? Whats the problem ?

yes, histogram bars in a negative position are not displayed.
I have changed geom_col by geom_bar:
geom_bar(stat = "identity", position = "dodge", aes(fill = Refs)) + facet_wrap(~name)

and now they are displayed.

The default stat for geom_bar is "count", so I understand why in your case you would need to override it to be "identity" , however, that is also the use case for geom_col, whose default stat is "identity".
In other words, geom_col() is a shorter way to write geom_bar(stat="identity") ;

1 Like

ok, i understand now.
Also i try to change the background color of the header facets with:
strip.background = element_rect(fill=factor(lsub$name), colour="black", size=0.5)

but i have only the same color for all the facets. Is it possible to have one different color per header ?

ggplot doesnt support doing that.

Maybe you could do something with ggh4x though.

Facets • ggh4x (teunbrand.github.io)

ok, thank you, i'm going to try this package.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.