ggplot2’s facet options are a great way make small multiples, i.e. multiple plots of the same type in a panel or grid. In this post, we will learn how to control the border line in a plot made with facet_wrap() function in ggplot2.
First we will see how to remove the border lines in a facet using panel.border argument in theme() function. And then we will learn how to remove the spacings between the plots in the panel using “panel.spacing.x” argument to theme() function.
A Boxplot with facet_wrap
Let us get started by loading tidyverse and palmer penguins dataset for making a plot using facet_wrap(). As we all know ggplot2 makes a plot with grey background by default and here we change it to white background using theme_bw() option.
1 2 3 4 | library (tidyverse) library (palmerpenguins) # set theme_bw() theme_set ( theme_bw (18)) |
Here is how our data looks like.
1 2 3 4 5 6 7 8 9 10 11 12 13 | penguins %>% head () ## # A tibble: 6 x 8 ## species island bill_length_mm bill_depth_mm flipper_length_… body_mass_g sex ## <fct> <fct> <dbl> <dbl> <int> <int> <fct> ## 1 Adelie Torge… 39.1 18.7 181 3750 male ## 2 Adelie Torge… 39.5 17.4 186 3800 fema… ## 3 Adelie Torge… 40.3 18 195 3250 fema… ## 4 Adelie Torge… 36.7 19.3 193 3450 fema… ## 5 Adelie Torge… 39.3 20.6 190 3650 male ## 6 Adelie Torge… 38.9 17.8 181 3625 fema… ## # … with 1 more variable: year <int> |
We will make boxplot between sex and bill length from palmer penguins data and use facet_wrap() to make the boxplot for all species in the dataset.
1 2 3 4 5 6 | penguins %>% ggplot ( aes (x=sex, y=bill_length_mm, color=sex))+ geom_boxplot (outlier.shape = NA , width=0.5)+ geom_jitter (width=0.15, alpha=0.5)+ facet_wrap (~species)+ theme (legend.position= "none" ) |
Our grouped boxoplot made with face_wrap() looks like this, where each panel correspond to a specific species.

How to Remove Panel Border Lines in a facet in ggplot2?
Note that each panel has a outline box and we can control the panel border using panel.border argumnet in theme() function. To remove the panel border, we set “panel.border=element_blank()”.
1 2 3 4 5 6 7 | penguins %>% ggplot ( aes (x=sex, y=bill_length_mm, color=sex))+ geom_boxplot (outlier.shape = NA , width=0.5)+ geom_jitter (width=0.15, alpha=0.5)+ facet_wrap (~species)+ theme (legend.position= "none" , panel.border = element_blank ()) |
Now we get a face plot without any panel borders.

How to Remove Spacing between Panels in a facet in ggplot2?
Sometimes you might want to remove the empty spacings between each panel in a facet plot. We can customize the spacing between panels using “panel.spacing.x” argument to theme() function again.
In this example, we remove the spacing between panels by setting ‘panel.spacing.x = unit(0,”line”)’.
1 2 3 4 5 6 7 8 | penguins %>% ggplot ( aes (x=sex, y=bill_length_mm, color=sex))+ geom_boxplot (outlier.shape = NA , width=0.5)+ geom_jitter (width=0.15, alpha=0.5)+ facet_wrap (~species)+ theme (legend.position= "none" , panel.border = element_blank (), panel.spacing.x = unit (0, "line" )) |
After removing the panel spacing our plot looks like grouped boxplot with labels for each group, in this case for each species.
