1000 arasında rasgele sayı kümesini kullanarak R'de yoğunluk eğrisi oluşturmaya çalışıyorum ve daha az veya eşit parçayı gölgeleyin belli bir değere. Orada geom_area
veya geom_ribbon
içeren bir çok çözüm var, ama hepsi (ben sadece 1000 sayı bir vektör) sahip değilim bir yval
gerektirir. Bunu nasıl yapabileceğime dair bir fikrin var mı?ggplot'ta yoğunluk eğrisinin bir kısmını gölgeleme (y ekseni verisi olmadan)
iki diğer ilgili sorular:
- bir kümülatif yoğunluk (Şu anda bir tane oluşturmak için
stat_ecdf
kullanıyorum) işlevi, ya da hiç gölge onun için aynı şeyi yapmak mümkün mü? geom_vline
dosyasını düzenlemenin herhangi bir yolu var mı? Böylece, yalnızca y ekseninden ziyade yoğunluk eğrisinin yüksekliğine kadar gider?
Kodu: (geom_area
buldum bazı kodunu düzenlemek için başarısız bir girişimdir el ymax
ayarlarsanız, sadece eğrinin altındaki bölgeye verilen yerine, bütün arsa kaplıyor bir sütun olsun.)
set.seed(100)
amount_spent <- rnorm(1000,500,150)
amount_spent1<- data.frame(amount_spent)
rand1 <- runif(1,0,1000)
amount_spent1$pdf <- dnorm(amount_spent1$amount_spent)
mean1 <- mean(amount_spent1$amount_spent)
#density/bell curve
ggplot(amount_spent1,aes(amount_spent)) +
geom_density(size=1.05, color="gray64", alpha=.5, fill="gray77") +
geom_vline(xintercept=mean1, alpha=.7, linetype="dashed", size=1.1, color="cadetblue4")+
geom_vline(xintercept=rand1, alpha=.7, linetype="dashed",size=1.1, color="red3")+
geom_area(mapping=aes(ifelse(amount_spent1$amount_spent > rand1,amount_spent1$amount_spent,0)), ymin=0, ymax=.03,fill="red",alpha=.3)+
ylab("")+
xlab("Amount spent on lobbying (in Millions USD)")+
scale_x_continuous(breaks=seq(0,1000,100))
de
y
değeri elde etmek için kullanıldı. Eğer 'p' temel yoğunluk çiziminiz ise: 'd <- ggplot_build (p) $ data [[1]]; p + geom_area (data = subset (d, x> rand1), aes (x = x, y = y), fill = "kırmızı") ' – user20650