Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Move axis labels in between plot and facet strip

I am trying to move the facet strip to the far left of my plot, so that the labels sit adjacent to the bars, and the grouping strips sit to their left (see my example below).

I assume this must be done with Grobs, but I have little experience with that level of manipulation and would appreciate guidance.

Data:

structure(list(dept = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L), .Label = c("Distribution Centre Services", "IT", 
"Marketing", "Merchandise & Inventory", "Operations and Communication"
), class = "factor"), label = c("test 25", "test 23", "test 24", 
"test 27", "test 26", "test 28", "test 29", "test 31", "test 33", 
"test 30", "test 32", "test 38", "test 36", "test 37", "test 43", 
"test 34", "test 35", "test 40", "test 39", "test 42", "test 41", 
"test 25", "test 23", "test 24", "test 27", "test 26", "test 28", 
"test 29", "test 31", "test 33", "test 30", "test 32", "test 38", 
"test 36", "test 37", "test 43", "test 34", "test 35", "test 40", 
"test 39", "test 42", "test 41"), Gap = c(-0.16, -0.18, -0.21, 
-0.22, -0.27, -0.29, -0.31, -0.31, -0.35, -0.39, -0.42, -0.15, 
-0.15, -0.2, -0.21, -0.22, -0.27, -0.29, -0.29, -0.31, -0.36, 
-0.16, -0.18, -0.21, -0.22, -0.27, -0.29, -0.31, -0.31, -0.35, 
-0.39, -0.42, -0.15, -0.15, -0.2, -0.21, -0.22, -0.27, -0.29, 
-0.29, -0.31, -0.36), section = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L), impeff = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L), .Label = c("Effectiveness", "Importance"), class = "factor"), 
    score = c(0.77, 0.79, 0.82, 0.8, 0.83, 0.9, 0.91, 0.94, 0.89, 
    0.94, 0.91, 0.82, 0.74, 0.78, 0.81, 0.83, 0.85, 0.82, 0.81, 
    0.8, 0.83, 0.61, 0.61, 0.61, 0.58, 0.56, 0.61, 0.6, 0.63, 
    0.54, 0.55, 0.49, 0.67, 0.59, 0.58, 0.6, 0.61, 0.58, 0.53, 
    0.52, 0.49, 0.47)), .Names = c("dept", "label", "Gap", "section", 
"impeff", "score"), row.names = c(23L, 24L, 25L, 26L, 27L, 28L, 
29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 
42L, 43L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 73L, 74L, 75L, 76L, 
77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 86L), class = "data.frame")

Code:

curr.plot <- ggplot(data = curr.data, aes(x = label, y = score)) + 
    geom_bar(aes(fill = impeff),stat = "identity", position = "dodge",width = .7) +
    geom_text(aes(label=percent(score),group=impeff), position= position_dodge(width=.7),vjust=.4,hjust=-.1) + 
    facet_grid(dept~., switch = "y", scales = "free_y", space = "free") +
    theme(legend.position = "bottom")+
    coord_flip()+
    guides(fill = guide_legend(reverse=TRUE,title=NULL))+
    theme(axis.title.x = element_blank()) +
    theme(axis.title.y = element_blank()) +
    theme(axis.text.y = element_text(colour="black"))+
    theme(strip.text.y = element_text(size = 12, colour = "black"))+
    scale_y_continuous(labels=percent,limits = c(0,1)) 

Current output: enter image description here

Desired output (shopped): enter image description here

like image 698
Alex Avatar asked Apr 07 '17 01:04

Alex


People also ask

How to remove label from facet wrap?

To remove the label from facet plot, we need to use “strip. text. x” argument inside the theme() layer with argument 'element_blank()'.

How do I remove the Y axis labels?

When we create a plot in R, the Y-axis labels are automatically generated and if we want to remove those labels, the plot function can help us. For this purpose, we need to set ylab argument of plot function to blank as ylab="" and yaxt="n" to remove the axis title.


1 Answers

Try:

+ theme(strip.placement = "outside")
like image 162
neilfws Avatar answered Oct 22 '22 16:10

neilfws