Ben aynı kategorileri (kedi) paylaşan iki farklı sinyal (ind) kutularını elde etmek için ggplot üzerinde position_dodge kullanmaya çalışıyorum. Bir sinyal için veri içeren, ancak diğeri için olmayan bir kategori olduğunda, verilere sahip olan sinyalin kutucuğu tüm yatay boşlukları kapsar ve o kategori için position_dodge talimatına uymaz. Kaçma kuralını uygulamak için ggplot yapmanın bir yolu var mı? Aşağıdaki örnekte de görebileceğiniz gibi, x sinyalinin B kategorisi için bir veri içermediği için, position_dodge tarafından ayrılmış alanı kaybeder. Bundan kaçınmak istiyorum.Ggplot'un position_dodge'ını veri içermeyen kategoriler üzerinde nasıl uygulanır?
Şimdiden teşekkürler.
data<-data.frame(cat=c('A','A','A','A','B','B','A','A','A','A','B','B'),
values=c(3,2,1,4,NA,NA,4,5,6,7,8,9),
ind=c('x','x','x','x','x','x','y','y','y','y','y','y'))
print(ggplot() +
scale_colour_hue(guide='none') +
geom_boxplot(
aes(x=as.factor(cat), y=values,
fill=ind),
position=position_dodge(width=.60),
data=data,
outlier.size = 1.2,
na.rm=T))
İLERLEME bazı geçici çözümler sonra ben için ... (tür) arıyordu sonuca
data <- data.frame(
cat=c('A','A','A','A','B','B','A','A','A','A','B','B','B'),
values=c(3,2,1,4,NA,NA,4,5,6,7,8,9, 0),
ind=c('x','x','x','x','x','x','y','y','y','y','y','y','x'))
p <- ggplot() +
scale_colour_hue(guide='none') +
geom_boxplot(aes(x=as.factor(cat), y=values, fill=ind),
position=position_dodge(width=.60),
data=data,
outlier.size = 1.2,
na.rm=T) +
geom_line(aes(x=x, y=y),
data=data.frame(x=c(0,3),y=rep(0,2)),
size = 1,
col='white')
print(p)
ile geldi
GÜNCELLEME
Bazı insanlar, etkilerini etkilemek için faceting kullanarak anted. Faceting bana aradığım etkiyi vermiyor. y en
Dikkat edilirse beyaz büyük onay işareti = 10 diğer kene işaretleri daha kalındır: aradığım nihai grafik aşağıda gösterilmiştir. Bu daha kalın satır, istenmeyen kutucuklarını gizleyen boyut = 1 olan geom_line'dır.
Farklı geom nesnelerini daha sorunsuz bir şekilde birleştirebilseydik. Bunu Hadley'in github'unda bir böcek olarak rapor ettim, ama Hadley bunun position_dodge'un tasarımla nasıl davrandığını söyledi. Ben standart olmayan bir şekilde ggplot2 kullanıyorum sanırım ve geçici çözümler bu tür konularda devam etmenin yoludur. Her neyse, umarım bu, bazı üyelerin ggplot işlevlerini biraz daha ileriye taşımasına yardımcı olur.
2.5 yıl sonra bunu halletmenin daha iyi bir yolu var mı? Bende aynı durum var. Ben çiziyorum değişkeninin tüm eksik faktör seviyesi kombinasyonları için NA ile bir veri seti oluşturmak için expand.grid() kullanmayı denedim ve göz ardı ediliyor gibi görünüyor. – Michael
https://github.com/hadley/ggplot2/issues/688 Belki de yok :( – Michael
Ben ggplot kodunu bir işleve sardım ve beyaz çizgi y ekseni konumunu bu işlevin bir parametresi haline getirdim Nedeni, eğer veri y = 0 ile kesişirse, beyaz çizginin altına düşecek ve bu da çözümün çok belirgin ve dikkati dağılmasına neden olacaktır: – JAponte