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