Bagaimana saya bisa mengubah judul legenda di ggplot2? [Tutup]


58

Saya punya plot yang saya buat di ggplot2 untuk merangkum data yang berasal dari dataset sel 2 x 4 x 3. Saya sudah bisa membuat panel untuk variabel 2-leveled menggunakan facet_grid(. ~ Age)dan untuk mengatur sumbu x dan y menggunakan aes(x=4leveledVariable, y=DV). Saya dulu aes(group=3leveledvariable, lty=3leveledvariable)memproduksi plot sejauh ini. Ini memberi saya visualisasi yang panel oleh variabel 2-level, dengan sumbu X mewakili 4 variabel level dan garis yang berbeda diplot dalam panel untuk variabel 3-level. Tetapi kunci untuk variabel 3-leveled berjudul dengan nama variabel 3-leveled dan saya ingin itu menjadi judul yang memiliki ruang karakter di dalamnya. Bagaimana saya bisa mengganti nama judul legenda?

Hal-hal yang saya coba tidak berhasil (di mana abpobjek ggplot2 saya):

 abp <- abp + opts(legend.title="Town Name")
 abp <- abp + scale_fill_continuous("Town Name")
 abp <- abp + opts(group="Town Name")
 abp <- abp + opts(legend.title="Town Name")

Contoh data:

ex.data <- data.frame(DV=rnorm(2*4*3), V2=rep(1:2,each=4*3), V4=rep(1:4,each=3), V3=1:3)

2
@drknexus - jika Anda dapat membagikan data Anda, itu akan sangat membantu, atau arahkan ke dataset serupa dalam R yang memiliki bentuk yang sama dengan data Anda.
Mengejar

1
Semua orang di sini tampaknya sangat berpengetahuan tetapi saya tahu untuk pertanyaan terkait ggplot saya menemukan grup google mereka sangat membantu. groups.google.com/group/ggplot2
Dason

Selain dokumentasi terkenal dan sangat baik di halaman Hadley, referensi yang tidak begitu terkenal tentang Git Hub sangat membantu dengan masalah seperti ini.
hans0l0

Atau, theme_get()berikan Anda referensi yang sama di konsol.
Brandon Bertelsen

1
Menanggapi beberapa bendera yang meminta migrasi SO, sebenarnya tidak mungkin; lihat alasannya di SO.meta: meta.stackexchange.com/q/8004/150510 , meta.stackexchange.com/q/151890/150510 .
chl

Jawaban:


25

Pilihan lain adalah menggunakan

p + labs(aesthetic='custom text')     

Sebagai contoh, contoh Chase akan terlihat seperti:

library(ggplot2)

ex.data <- data.frame(DV=rnorm(2*4*3),V2=rep(1:2,each=4*3),V4=rep(1:4,each=3),V3=1:3)
p <- qplot(V4, DV, data=ex.data, geom="line", group=V3, linetype=factor(V3)) + facet_grid(. ~ V2)
p + labs(linetype='custom title')

dan menghasilkan angka: masukkan deskripsi gambar di sini


Hari-hari ini saya cenderung lebih suka menggunakan labs () untuk memodifikasi label lebih dari menentukan mereka pada skala / sumbu berdasarkan skala / sumbu.
russellpierce

38

Anda dapat mengubah judul legenda dengan memodifikasi skala untuk legenda itu. Berikut ini contoh menggunakan dataset CO2

library(ggplot2)

p <- qplot(conc, uptake, data = CO2, colour = Type) + scale_colour_discrete(name = "Fancy Title")
p <- p + facet_grid(. ~ Treatment)
p 

SUNTING:

Menggunakan contoh data dari atas, berikut adalah solusi yang berfungsi. Saya pikir ini meniru alur yang coba dibuat @drknexus. Sebagai catatan tambahan, jika ada yang bisa menjelaskan mengapa kita harus memperlakukan V3 sebagai faktor untuk memetakannya ke legenda, saya akan menghargainya.

p <- qplot(V4, DV, data = ex.data, geom = "line", group = V3, lty = factor(V3)) 
p <- p + scale_linetype_discrete(name = "Fancy Title") + facet_grid(. ~ V2)
p 

teks alternatif


Saya pikir apa yang saya lewatkan adalah fungsi seperti scale_color_discrete yang terkait dengan spesifikasi "grup" atau "lty" di ggplot (data = ex.daata, aes (x = V4, y = DV, grup = V3, lty = V3 ))
russellpierce

1
Ah saya menemukannya: scale_linetype_discrete (name = "bob")
russellpierce

@Chase: Edit dengan bit scale_linetype_discrete dan saya akan menerima jawaban Anda.
russellpierce

1
@drknexus - masalah dengan yang ada dalam contoh kerja saya, perintah yang sesuai adalah scale_colour_discrete()dan kode yang Anda kerjakan jelas sedikit berbeda. Saya tidak tahu kode apa itu ...
Chase

3
@Chase Re: "mengapa kita harus memperlakukan V3 sebagai faktor" scale_linetype_discretemengharapkan variabel dengan nilai-nilai diskrit (dari faktor atau karakter plyr::is.discrete), periksa kode src pada Github, j.mp/ejaRRT . Respons yang bagus (+1).
chl
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.