Mengkodekan tiga kondisi dalam plot sebar di ggplot2

Saya ingin membuat ggplot2 plot sebar (geom_point) di mana kode poin untuk tiga karakteristik berbeda. Jadi saya berpikir untuk menggunakan shape, colour dan fill (dengan menggunakan bentuk 21 hingga 25 yang bisa diisi). Meskipun plotnya sendiri terlihat baik-baik saja, legendanya tidak memperlihatkan warna isian (semua titik tampak hitam). Ini MWE, perhatikan simbol hitam untuk carb:

p <- ggplot(mtcars, aes(wt, mpg, shape = factor(gear),
                    fill = factor(carb), colour = factor(cyl)))
p + geom_point(size = 3) + scale_shape_manual(values = 21:25)

Apakah ada cara untuk mengubah fill-legend agar menampilkan warna aslinya?


person AnjaM    schedule 10.05.2014    source sumber
comment
Saya tidak yakin, tapi menurut saya Anda tidak dapat memetakan color dan fill ke variabel berbeda di geom_point. Lagipula kamu tidak seharusnya melakukannya.   -  person Roland    schedule 10.05.2014
comment
@Roland Pemetaan itu sendiri berfungsi (seperti di MWE), hanya saja legendanya yang tidak. Dan ya, saya perlu mengkodekan (setidaknya) tiga fitur dalam satu plot, ini tidak akan berupa diagram dengan angka-angka yang bermakna tetapi hanya gambar yang menunjukkan desain eksperimen, mirip dengan ini: r-bloggers.com/plotting-microtiter-plate-maps. Namun, jika Anda memiliki saran tentang cara mengkodekan fitur ketiga, saya akan dengan senang hati mengetahuinya.   -  person AnjaM    schedule 10.05.2014
comment
ggplot(mtcars, aes(wt, mpg, shape = factor(gear), colour = factor(carb))) + geom_point(size = 3) + facet_grid(.~cyl) akan menjadi plot yang lebih baik.   -  person Roland    schedule 10.05.2014
comment
@Roland Silakan lihat tautan web yang disediakan. Sekali lagi: Saya tidak akan memplot angka-angka yang berarti, melainkan desain pelat. Pelat mikrotiter tidak dapat dibuat segi.   -  person AnjaM    schedule 10.05.2014


Jawaban (1)


Saya pikir ini berhasil, mengubah bentuk legenda isian menjadi 21:

p + geom_point(size = 3) + 
    scale_shape_manual(values = 21:25)+
      scale_fill_discrete(guide=guide_legend(override.aes=list(shape=21)))
person Ben Bolker    schedule 10.05.2014
comment
Terima kasih banyak, itu terlihat sempurna! Tahukah Anda apakah mungkin untuk membuat garis berwarna di sekitar titik menjadi lebih tebal sehingga lebih terlihat pada plot? - person AnjaM; 10.05.2014
comment
Saya hanya akan menyarankan itu. Saya pikir menyesuaikan linewidth (lwd) akan membantu. - person Ben Bolker; 10.05.2014
comment
Sayangnya, menyetel lwd di geom_point tidak menghasilkan apa-apa. - person AnjaM; 10.05.2014
comment
Ini sepertinya jawaban untuk cerita lwd: stackoverflow.com/questions/17677687/ Terima kasih atas bantuan Anda! - person AnjaM; 10.05.2014