Як я можу маніпулювати текстом смужки з графіків граней facet_grid?


100

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

Як приклад, розглянемо набір даних mpg.

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

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

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

Заздалегідь велике спасибі.

Відповіді:


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 Дуже приємно. Чи є спосіб покращити також анотацію осі х?
Джордж Донтас,

Дякую, rcs. Я з gd047, і, можливо, це має бути окремим питанням? Я думаю, що ви помічаєте скупчення основних значень x. Повинен бути спосіб встановити значення головної позначки на осі х та осі у вручну, але я не пам’ятаю, що це :-(
briandk

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

1
Посилання в Q повинні бути кілька інформативні: stackoverflow.com/questions/2258784/list-of-ggplot2-options
Роман Luštrik


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 ("", "\ n", рівні (ефект птиці $))
dca
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.