Como posso manipular o texto da tira de gráficos facet_grid?

100

Estou me perguntando como posso manipular o tamanho da faixa de texto em plotagens facetadas. Minha pergunta é semelhante a uma pergunta sobre títulos de enredo , mas estou especificamente preocupado em manipular não o título do enredo, mas o texto que aparece nos títulos das facetas (strip_h).

Como exemplo, considere o conjunto de dados mpg.

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

A saída resultante produz alguns títulos de faceta que não cabem na faixa.

Estou pensando que deve haver uma maneira gridde lidar com o texto da tira. Mas ainda sou um novato e não tinha certeza, pelo gridapêndice do livro de Hadley, de como fazer isso precisamente. Além disso, estava com medo de que se fizesse errado, minha máquina de lavar quebrasse, pois acredito que toda tecnologia está conectada através da Força :-(

Muito obrigado antecipadamente.

Briandk
fonte

Respostas:

134

Você pode modificar strip.text.x(ou strip.text.y) usando theme_text(), por exemplo

qplot(hwy, cty, data = mpg) + 
      facet_grid(. ~ manufacturer) + 
      opts(strip.text.x = theme_text(size = 8, colour = "red", angle = 90))

Atualização: para ggplot2 versão> 0.9.1

qplot(hwy, cty, data = mpg) + 
      facet_grid(. ~ manufacturer) + 
      theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
rcs
fonte
1 Muito bom. Existe uma maneira de melhorar também a anotação do eixo x?
George Dontas
Obrigado rcs. Estou com gd047, e talvez essa deva ser uma questão separada? O que você está percebendo é a aglomeração dos principais valores x, eu acho. Deve haver uma maneira de definir os valores das marcas de escala principais do eixo xe do eixo y manualmente, mas não consigo me lembrar o que é :-(
briandk
@ gd047:axis.text.x=theme_text(...)
rcs
1
Os links neste Q devem ser um tanto informativos: stackoverflow.com/questions/2258784/list-of-ggplot2-options
Roman Luštrik
6

Acho que no exemplo de mpgalterar o ângulo de rotação e o tamanho da fonte está bom, mas em muitos casos você pode se deparar com variáveis ​​que têm rótulos muito longos e pode se tornar uma dor de cabeça (literalmente) tentar ler rótulos longos girados .

Portanto, além (ou complemento) de alterar ângulos e tamanhos, geralmente reformato os rótulos dos fatores que definem o momento em facet_gridque eles podem ser divididos de uma maneira que faça sentido.

Normalmente, se eu tenho um dataset$variablecom cordas que parece

c("median_something", "aggregated_average_x","error","something_else")

Eu simplesmente faço:

reformat <function(x,lab="\n"){ sapply(x, function(c){ paste(unlist(strsplit(as.character(c) , split="_")),collapse=lab) }) }

[talvez haja definições melhores de, reformatmas pelo menos esta funciona bem.]

dataset$variable <- factor(dataset$variable, labels=reformat(dataset$variable, lab='\n')

E ao facetar, todos os rótulos serão muito legíveis:

ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable)
G Chalancon
fonte
1
Talvez algo assim seja melhor: levels (birds $ effect) <- gsub ("", "\ n", levels (birds $ effect))
dca