Как я могу управлять полосковым текстом графиков facet_grid?


100

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

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

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

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

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

Спасибо заранее.

Ответы:


134

Вы можете изменить 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))

+1 Очень красиво. Есть ли способ улучшить аннотацию оси x?
Джордж Донтас,

Спасибо rcs. Я с gd047, и, возможно, это должен быть отдельный вопрос? Я думаю, что вы замечаете скопление основных значений x. Должен быть способ установить значения основных делений по оси X и Y вручную, но я не могу вспомнить, что это такое :-(
briandk

@ gd047:axis.text.x=theme_text(...)
rcs

1
Ссылки в этом Q должны быть несколько информативными: stackoverflow.com/questions/2258784/list-of-ggplot2-options
Роман Луштрик

32

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

6

Я думаю, что в примере с 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)

1
Может быть , что - то вроде этого лучше: уровней (птиц $ эффекта) <- GSUB (»», "\ п", уровни (птицы $ эффекта))
дк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.