SiH
SiH

Reputation: 1546

predefine bins in geom_histogram

How do I pre-define bins for the histogram? For e.g.

predefine_bin_edges <- seq(0, 10, 1)

Can someone please use this predefine bin edges to update the example.

Edited later - Also, Is there a way to include the extreme points, that are outside the binrange, in the corner bins for a complete picture of data distribution.

library(tidyverse)

# data
x <- rnorm(n = 1000, mean = 5, sd = 3)
tbl <- tibble(x)

# geom_histogram()
ggplot(data = tbl,
       aes(x = x)) + 
  geom_histogram()

Upvotes: 0

Views: 527

Answers (1)

teunbrand
teunbrand

Reputation: 37903

Do you mean like this?

library(tidyverse)

# data
x <- rnorm(n = 1000, mean = 5, sd = 3)
tbl <- tibble(x)

# geom_histogram()
ggplot(data = tbl,
       aes(x = x)) + 
  geom_histogram(breaks = seq(0, 10, 1))

I don't think there is an argument to geom histogram that can include the values outside the range in the corner bins. However, you can squish the data at the aes() level.

ggplot(data = tbl,
       aes(x = pmax(pmin(x, 10), 0))) + 
  geom_histogram(breaks = seq(0, 10, 1))

Or if you're uncomfortable with that, you can set the limits + oob arguments in the scale.

ggplot(data = tbl,
       aes(x = x)) + 
  geom_histogram(breaks = seq(0, 10, 1)) +
  scale_x_continuous(limits = c(0, 10),
                     oob = scales::oob_squish)

Upvotes: 1

Related Questions