Как я могу манипулировать текстом полосы графиков facet_grid?
Мне интересно, как я могу манипулировать размером текста полосы на ограненных графиках. Мой вопрос похож на вопрос о заголовках сюжета, но я особенно заинтересован в манипулировании не заголовком сюжета, а текстом, который появляется в заголовках фасетов (strip_h).
В качестве примера рассмотрим набор данных mpg.
library(ggplot2)
qplot(hwy, cty, data = mpg) + facet_grid( . ~ manufacturer)
В результате получается несколько титров фасетов, которые не помещаются в полосу.
Я думаю, что должен быть способ использовать grid
разобраться с полоской текста. Но я все еще новичок и не был уверен с grid
Приложение в книге Хэдли, как именно это сделать. Кроме того, я боялся, что если я сделаю это неправильно, это сломает мою стиральную машину, так как я считаю, что все технологии связаны с помощью The Force:-(
Спасибо заранее.
3 ответа
Вы можете изменить strip.text.x
(или же strip.text.y
) с помощью theme_text()
, например
qplot(hwy, cty, data = mpg) +
facet_grid(. ~ manufacturer) +
opts(strip.text.x = theme_text(size = 8, colour = "red", angle = 90))
Обновление: для версии ggplot2> 0.9.1
qplot(hwy, cty, data = mpg) +
facet_grid(. ~ manufacturer) +
theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
В настоящее время использование opts
а также theme_text
кажется устаревшим. R предлагает использовать theme
а также element_text
, Решение для ответа можно найти здесь: http://wiki.stdout.org/rcookbook/Graphs/Facets%20%28ggplot2%29/
qplot(hwy, cty, data = mpg) +
facet_grid(. ~ manufacturer) +
theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
Я думаю, на примере mpg
Изменение угла поворота и размера шрифта - это хорошо, но во многих случаях вы можете столкнуться с переменными, которые имеют довольно длинные метки, и это может стать болью в шее (буквально), чтобы попытаться прочитать повернутые длинные метки.
Поэтому в дополнение (или дополнение) к изменению углов и размеров я обычно переформатирую метки факторов, которые определяют facet_grid
всякий раз, когда они могут быть разделены таким образом, что имеет смысл.
Как правило, если у меня есть dataset$variable
со строками, которые выглядят как
c("median_something", "aggregated_average_x","error","something_else")
Я просто делаю:
reformat <– function(x,lab="\n"){ sapply(x, function(c){ paste(unlist(strsplit(as.character(c) , split="_")),collapse=lab) }) }
[возможно, есть лучшие определения reformat
но по крайней мере этот работает нормально.]
dataset$variable <- factor(dataset$variable, labels=reformat(dataset$variable, lab='\n')
А после огранки все метки будут очень читабельными:
ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable)