Bagaimana cara memanipulasi teks strip dari plot facet_grid?

100

Saya bertanya-tanya bagaimana saya bisa memanipulasi ukuran teks strip dalam plot facetted. Pertanyaan saya mirip dengan pertanyaan tentang judul plot , tetapi saya secara khusus memperhatikan manipulasi bukan judul plot tetapi teks yang muncul di judul faset (strip_h).

Sebagai contoh, pertimbangkan kumpulan data mpg.

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

Keluaran yang dihasilkan menghasilkan beberapa judul faset yang tidak pas di strip.

Saya berpikir pasti ada cara yang digunakan griduntuk menangani teks strip. Tetapi saya masih seorang pemula dan tidak yakin dari gridlampiran di buku Hadley bagaimana tepatnya melakukannya. Juga, saya takut jika saya melakukan kesalahan itu akan merusak mesin cuci saya, karena saya yakin semua teknologi terhubung melalui The Force :-(

Terima kasih banyak sebelumnya.

briandk
sumber

Jawaban:

134

Anda dapat memodifikasi strip.text.x(atau strip.text.y) menggunakan theme_text(), misalnya

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

Pembaruan: untuk versi ggplot2> 0.9.1

qplot(hwy, cty, data = mpg) + 
      facet_grid(. ~ manufacturer) + 
      theme(strip.text.x = element_text(size = 8, colour = "red", angle = 90))
rcs
sumber
+1 Sangat bagus. Apakah ada cara untuk juga meningkatkan anotasi sumbu x?
George Dontas
Terima kasih rcs. Saya dengan gd047, dan mungkin itu harus menjadi pertanyaan terpisah? Apa yang Anda perhatikan adalah banyaknya nilai x utama, saya kira. Harus ada cara untuk mengatur nilai tanda centang sumbu x dan sumbu y utama secara manual, tapi saya tidak ingat apa itu :-(
briandk
@ gd047:axis.text.x=theme_text(...)
rcs
1
Tautan dalam Q ini harus agak informatif: stackoverflow.com/questions/2258784/list-of-ggplot2-options
Roman Luštrik
6

Saya kira dalam contoh mpg mengubah sudut rotasi dan ukuran font baik-baik saja, tetapi dalam banyak kasus Anda mungkin menemukan diri Anda dengan variabel yang memiliki label yang cukup panjang, dan itu bisa menjadi sakit di leher (secara harfiah) untuk mencoba membaca label panjang yang diputar .

Jadi sebagai tambahan (atau pelengkap) untuk mengubah sudut dan ukuran, saya biasanya memformat ulang label faktor yang menentukan facet_grid kapan mereka dapat dipisahkan dengan cara yang masuk akal.

Biasanya jika saya memiliki dataset$variabledengan string yang terlihat seperti

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

Saya hanya melakukan:

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

[mungkin ada definisi yang lebih baik reformattetapi setidaknya yang satu ini berfungsi dengan baik.]

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

Dan setelah facetting, semua label akan sangat mudah dibaca:

ggplot(data=dataset, aes(x,y)) + geom_point() + facet_grid(. ~ variable)
G Chalancon
sumber
1
Mungkin sesuatu seperti ini lebih baik: level (birds $ effect) <- gsub ("", "\ n", level (birds $ effect))
dca