Kreitz Gigs
Kreitz Gigs

Reputation: 379

Increase space between two discrete values in a ggplot2 plot in R

I am trying to figure out how to add space in a plot between two discrete values on the x-axis. For example, in the plot below, I'd like to keep the same spacing between Setosa and Versicolor but add space between Versiolor and Virginica within the plot (not the axis labels).

data(iris)

library(ggplot2)
ggplot(data = iris, aes(x = Species, y = Sepal.Width)) +
  geom_point() 

Upvotes: 0

Views: 1457

Answers (1)

Allan Cameron
Allan Cameron

Reputation: 173793

The easiest way I know of to do this is to make the axis numeric, using custom breaks and labels:

library(ggplot2)

iris %>%
  mutate(Species2 = ifelse(Species == "virginica", 4, as.numeric(Species))) %>%
  ggplot(aes(x = Species2, y = Sepal.Width)) +
  geom_point() +
  scale_x_continuous(breaks = c(1, 2, 4), labels = levels(iris$Species),
                     expand = c(0, 1), name = "Species",
                     minor_breaks = NULL)

enter image description here

Upvotes: 3

Related Questions