Bagaimana saya bisa 'menghindari' posisi geom_point di ggplot2?

19

Saya menggunakan ggplot2 di R untuk membuat plot seperti yang berikut:

masukkan deskripsi gambar di sini

Errorbars saling tumpang tindih yang terlihat sangat berantakan. Bagaimana saya bisa memisahkan errorbars untuk indeks yang berbeda? Saya telah menggunakan posisi = "menghindar" tetapi tampaknya tidak berfungsi. Inilah bagian utama dari kode saya:

plot =  ggplot(data,aes(x=ntrunc,y=beta_best,group=ntrunc,colour=INDEX))
       +geom_point(aes(shape=detectable),na.rm=TRUE,position="dodge") 
        +geom_errorbar(aes(x=ntrunc,ymax=beta_high,ymin=beta_low),na.rm=TRUE,position="dodge")
ycc
sumber
1
Sudahkah Anda mencoba nilai "menghindar" yang berbeda? Misalnya sesuatu seperti itu: position = position_dodge(width = 0.90). Lihat juga posting ini .
COOLSerdash
Terima kasih atas contoh Anda. Namun, saya baru saja mencoba nilai lebar yang berbeda dan tetap tidak berfungsi.
ycc
2
Sulit untuk menghasilkan solusi tanpa dataset asli. Tapi satu pertanyaan yang saya miliki: Mengapa nilai dan "grup" Anda sama? Apa ? Tidak seharusnya ? xntruncgroupINDEX
COOLSerdash
Ini berfungsi sekarang setelah saya mengubah group = "INDEX". Saya pikir saya telah salah mengerti arti 'kelompok'. Terima kasih @COOLSerdash
ycc

Jawaban:

12

The kelompok harus = INDEX bukan ntrunc di aes.

plot =  ggplot(data, aes(x=ntrunc, y=beta_best, group=INDEX, colour=INDEX)) +
   geom_point(aes(shape=detectable), na.rm=TRUE, position="dodge") +
   geom_errorbar(aes(x=ntrunc, ymax=beta_high, ymin=beta_low), na.rm=TRUE, position="dodge")

Plotnya terlihat lebih baik sekarang.

masukkan deskripsi gambar di sini

ycc
sumber
7
Ini tidak bekerja untuk saya sampai saya menggunakangeom_point(aes(shape=detectable),na.rm=TRUE, position=position_dodge(width=0.3))
Nova
Akan sangat bagus untuk mendapatkan contoh data di sini karena saya tidak dapat mereproduksi hasil Anda.
Léo Léopold Hertz 준영
1
@ Nova dugaan saya adalah jawabannya rusak ketika ggplot2beralih dari versi 0.9.Xke 1.Xatau2.X
Richard Erickson