Как я могу манипулировать полосой текста графиков facet_grid?
Мне интересно, как я могу манипулировать размером текста полосы в фасетных сюжетах. Мой вопрос
похож на вопрос о названиях сюжетов, но я особенно обеспокоен
манипулируя не заголовком сюжета, а текстом, который появляется в заголовках фасет (strip_h).
В качестве примера рассмотрим набор данных mpg.
library(ggplot2)
qplot(hwy, cty, data = mpg) + facet_grid( . ~ manufacturer)
Результат выводит некоторые заголовки фасет, которые не вписываются в полосу.
Я думаю, что для работы с текстом полосы должен использоваться способ grid
. Но я
все еще новичок и не был уверен в приложении grid
в книге Хэдли,
точно, чтобы это сделать. Кроме того, я боялся, если бы я сделал это неправильно, это сломало бы мою стирку
машина, так как я считаю, что вся технология подключена через The Force: - (
Большое спасибо заранее.
Ответы
Ответ 1
Вы можете изменить 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))
Ответ 2
В настоящее время использование opts
и theme_text
кажется устаревшим. R предлагает использовать theme
и element_text
. Решение ответа можно найти здесь: http://wiki.stdout.org/rcookbook/Graphs/Facets%20%28ggplot2%29/#modifying-facet-label-text
qplot(hwy, cty, data = mpg) +
facet_grid(. ~ manufacturer) +
theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
Ответ 3
Я думаю, что в примере 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)