Как я могу манипулировать текстом полосы графиков facet_grid? - PullRequest
79 голосов
/ 01 мая 2010

Мне интересно, как я могу манипулировать размером текста полосы на ограненных графиках. Мой вопрос похож на вопрос о названиях сюжетов , но меня особенно интересует манипулирование не заголовком графика, а текстом, который появляется в заголовках фасетов (strip_h).

В качестве примера рассмотрим набор данных mpg.

    library(ggplot2) 
    qplot(hwy, cty, data = mpg) + facet_grid( . ~ manufacturer)

Результирующий вывод дает некоторые заголовки фасетов, которые не помещаются в полосу.

Я думаю, что должен быть способ использовать grid для работы с текстом полосы. Но я все еще новичок и не был уверен из grid приложения в книге Хэдли как, точно, чтобы сделать это. Кроме того, я боялся, что если я сделаю это неправильно, это сломает мою стирку машина, так как я считаю, что все технологии связаны с помощью The Force: - (

Большое спасибо заранее.

Ответы [ 3 ]

106 голосов
/ 01 мая 2010

Вы можете изменить 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))
26 голосов
/ 19 октября 2012

В настоящее время использование 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 голосов
/ 11 апреля 2013

Полагаю, в примере 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...