2012-06-06 15 views
15

boxplot bir ggplot için basit lm eğilim hattı ekleme:kullandığım

boxplot(iris[,2]~iris[,1],col="LightBlue",main="Quartile1 (Rare)") 
modelQ1<-lm(iris[,2]~iris[,1]) 
abline(modelQ1,lwd=2) 

Ancak ggplot2 bu kullanarak:

a <- ggplot(iris,aes(factor(iris[,1]),iris[,2])) 
a + geom_boxplot() + 
geom_smooth(method = "lm", se=FALSE, color="black", formula=iris[,2]~iris[,1]) 

aşağıdaki hatayı alıyorum:

geom_smooth: Only one unique x value each group.Maybe you want aes(group = 1)? 

Ve çizgi benim arsa üzerinde görünmez.

Bu senaryoların her ikisinde de kullanılan modeller aynıdır. Herkes yanlış gittiğime işaret ederse, bu harika olurdu.

DÜZENLEME: İris veri kümesini örnek olarak kullandık. ggplot2 için

ggplot(iris, aes(factor(Sepal.Length), Sepal.Width)) + 
    geom_boxplot() + 
    geom_smooth(method = "lm", se=FALSE, color="black", aes(group=1)) 
Bilginize

enter image description here

cevap

22

hata mesajı hemen hemen kendini açıklıyor

Hata iletisi, en az birkaç kişi için yeterince açıklayıcı değildir :-). Bu durumda , anahtar önerilen estetik

library(ggplot2) 
qplot(factor(Sepal.Length), Sepal.Width, geom = c("smooth"), data= iris) 
# error, needs aes(group=1) 
qplot(factor(Sepal.Length), Sepal.Width, geom = c("smooth"), group = 1, data= iris) 
+0

Ah tamam, ben bilmiyordum formülünün sadece içeriğini onunla değiştirilmesi vardı eklemektir. Bunu çözdüğünüz için teşekkürler. – JPD

+0

Formülü "değiştirmediğimi" unutmayın. Formül gerekli değildi, ben de kaldırdım. – Andrie

+9

Pet peeve: "hata mesajı kendiliğinden açıklayıcıdır". Eğer kendini açıklayıcı olsaydı OP ile başlaması sorusunu sormazdı. – Twitch

1

, bu hata da basit qplot arayüzü kullanarak karşılaşılan (ve sabit) olabilir: aes(group=1)geom_smooth ekle:

İlgili konular