Without Line Breaks
Here's the messy looking example:No line breaks in axis labels |
And here's the code for the messy looking example:
library(OIdata) data(birds) library(ggplot2) ggplot(birds, aes(x = effect, y = speed)) + geom_boxplot()
With Line Breaks
We can use regular expressions to add line breaks to the factor levels by substituting any spaces with line breaks:
library(OIdata) data(birds) library(ggplot2) levels(birds$effect) <- gsub(" ", "\n", levels(birds$effect)) ggplot(birds, aes(x = effect, y = speed)) + geom_boxplot()
Line breaks in axis labels |
Horizontal Boxes
Here we can see the difference in a box plot with horizontal boxes. It's up to you to decide which style looks better:No line breaks in axis labels |
Line breaks in axis labels |
library(OIdata) data(birds) library(ggplot2) levels(birds$effect) <- gsub(" ", "\n", levels(birds$effect)) ggplot(birds, aes(x = effect, y = speed)) + geom_boxplot() + coord_flip()
Just a note: if you're not using ggplot, the multi-line axis labels might overflow into the graph.
The code is available in a gist.
You could also break using a set character width so that a line break is not necessarily added for every space. That is, you want a maximum width of 25 characters:
ReplyDeletesapply(strwrap(as.character(value), width=25, simplify=FALSE), paste, collapse="\n")
You can steal our function in the likert package: https://github.com/jbryer/likert/blob/master/R/label_wrap_mod.r
This is helpful, thanks Mollie, and to Jason for the alternative. I'll try them both out. Though Mollie, your first two code fragments are the same are they not? I imagine that the gsub line should not be in your 'messy example'?
ReplyDeleteThanks, David! I fixed it.
ReplyDelete