Как я могу манипулировать полосой текста графиков 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)