Question

I'm making a facet_grid plot using the following approach:

sample <- read.csv('sample.csv')

ggplot(sample, aes(category, count)) + geom_bar() + facet_grid(. ~ parent_id)

My data is structured in the following way:

id,parent_id, category, count
1,          21,     C1,       4
2,          21,     C2,       7
3,          21,     C3,       4
4,          22,     D1,      28
5,          22,     D2,      20
6,          22,     D3,       0
7,          22,     D5,       1
8,          22,     D6,       4
9,          22,     D7,       1
10,         23,     E1,      17
11,         23,     E2,      33
12,         23,     E3,      31

When I make a facet plot of this, it looks like this:

enter image description here

What I would like, is to limit the number of categories on each facet, so that I only show C1, C2, C3 on the first plot (etc). Is there a way that I can limit the number of categories that are shown here?


Here is the output of dput(sample) and my plot command, so that my image can be easily reproduced:

sample <-  

structure(list(id = 1:12, parent_id = c(21L, 21L, 21L, 22L, 22L, 
22L, 22L, 22L, 22L, 23L, 23L, 23L), category = structure(1:12, .Label = c("     C1", 
"     C2", "     C3", "     D1", "     D2", "     D3", "     D5", 
"     D6", "     D7", "     E1", "     E2", "     E3"), class = "factor"), 
    count = c(4L, 7L, 4L, 28L, 20L, 0L, 1L, 4L, 1L, 17L, 33L, 
    31L)), .Names = c("id", "parent_id", "category", "count"), class = "data.frame", row.names = c(NA, 
-12L))

 ggplot(sample, aes(category, count)) + geom_bar() + facet_grid(. ~ parent_id)
Was it helpful?

Solution

You can add scales="free_x" to facet_grid(). In this case for each facet you will have x values only in range of values used for particular facet. By adding space="free_x" you can ensure that bars have the same width in all facets.

ggplot(sample, aes(category, count)) + geom_bar() + 
  facet_grid(. ~ parent_id,scale="free_x",space="free_x")

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top