Adding space between bars in ggplot2
Asked Answered
P

1

47

I'd like to add spaces between bars in ggplot2. This page offers one solution: http://www.streamreader.org/stats/questions/6204/how-to-increase-the-space-between-the-bars-in-a-bar-plot-in-ggplot2. Instead of using factor levels for the x-axis groupings, however, this solution creates a numeric sequence, x.seq, to manually place the bars and then scales them using the width() argument. width() doesn't work, however, when I use factor level groupings for the x-axis as in the example, below.

library(ggplot2)

Treatment <- rep(c('T','C'),each=2)
Gender <- rep(c('M','F'),2)
Response <- sample(1:100,4)
df <- data.frame(Treatment, Gender, Response)

hist <- ggplot(df, aes(x=Gender, y=Response, fill=Treatment, stat="identity"))
hist + geom_bar(position = "dodge") + scale_y_continuous(limits = c(0, 
    100), name = "") 

Does anyone know how to get the same effect as in the linked example, but while using factor level groupings?

Predestinarian answered 22/5, 2011 at 0:13 Comment(1)
Also of note is the usefulness of facetting + facet_grid(~Treatment)Armagnac
O
96

Is this what you want?

hist + geom_bar(width=0.4, position = position_dodge(width=0.5))
  • width in geom_bar determines the width of the bar.
  • width in position_dodge determines the position of each bar.

Probably you can easily understand their behavior after you play with them for a while.

enter image description here

Outthink answered 22/5, 2011 at 1:6 Comment(4)
width in geom_histogram() is deprecated in modern ggplot2 (>= 2.1.0).Asshur
what if I want to keep the bars per-group together (e.g. the 'C' and 'T' bars here) but want to change the spacing between groups ('M' and 'F' here)?Determinative
Regarding the question by user5359531, see here: #51893375Cattery
As kohske didn't describe how they work: width in geom_bar is the width of x-axis bar groups. width in position_dodge is the width of bars within each x-axis group. A width of "1" means that bars/groups touch each other. Widths < 1 adds space between bars or between groups.Excommunicative

© 2022 - 2024 — McMap. All rights reserved.