Every time I make a fasted bar chart, if there is a section with no data ggplot will still make a spot for it in its aim for symmetry and thus it looks like these variables were tested and received a value of 0 which is not the case. Is there a way to override ggplot. Below is an example where the section 8 A3 looks like it record a 0 value but actually it was not investigated in the data set.
library(ggplot2)
library(dplyr)
# Your data
data <- data.frame(A = c(1, 2, 3, 1, 2, 3, 1, 2, 1, 2),
B = c(5, 34, 5, 34, 34, 56, 3, 3, 6, 35),
C = c("Light","Light", "Light", "Dark", "Dark", "Dark", "Light","Light", "Dark", "Dark"),
D = c(4, 4, 4, 4, 4, 4, 8, 8, 8, 8))
# Create plots
Plot1 <- ggplot(data, aes(x = A, y = B, fill = C)) +
geom_bar(stat = "identity", position = position_dodge2(preserve = "single")) +
theme_minimal() + theme(legend.position = "right") +
facet_wrap(~D)
Plot1
scales = "free_x" drops the unused x value
If you want to keep all the bars the same size use facet_grid with the space argument.
Solution provided below in ggplot2 - and also ggblanket
library(ggplot2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
# Your data
data <- data.frame(A = c(1, 2, 3, 1, 2, 3, 1, 2, 1, 2),
B = c(5, 34, 5, 34, 34, 56, 3, 3, 6, 35),
C = c("Light","Light", "Light", "Dark", "Dark", "Dark", "Light","Light", "Dark", "Dark"),
D = c(4, 4, 4, 4, 4, 4, 8, 8, 8, 8))
# Create plots
Plot1 <- ggplot(data, aes(x = A, y = B, fill = C)) +
geom_bar(stat = "identity", position = position_dodge2(preserve = "single")) +
theme_minimal() +
theme(legend.position = "right") +
facet_grid(.~D, scales = "free_x", space = "free_x") +
scale_x_continuous(breaks = 1:3)
Plot1
library(ggblanket)
data |>
gg_col(
x = A,
y = B,
col = C,
facet = D,
position = position_dodge2(preserve = "single"),
facet_layout = "grid",
facet_scales = "free_x",
facet_space = "free_x",
x_breaks = 1:3,
)
#> Warning in gg_blanket(data = data, geom = "col", stat = stat, position = position, : Ignoring unknown parameters: `contour`
#> Ignoring unknown parameters: `contour`
Created on 2024-02-24 with reprex v2.1.0