2013-08-20 28 views
0

如何使用類似於直方圖的密度圖的曲線擬合條形圖?如何添加適合條形圖的曲線

library(ggplot2) 
library(plyr) 
y<-hist(rnorm(1000),breaks=30)$count 

df<-data.frame(x=1:length(y),y=y,key="A") 
df2<-data.frame(x=1:length(y),y=y*0.4,key="B") 
df<-rbind(df,df2) 

p<-ggplot(df,aes(x=x)) 
p<-p + geom_bar(subset=.(key =="A"),aes(y = y),stat="identity",fill = "blue", alpha = 0.2) 
p<-p + geom_bar(subset=.(key =="B"),aes(y = y),stat="identity",fill = "blue", alpha = 0.2) 
#p<-p + geom_density(subset=.(key =="A"), aes(y=y),alpha=.2, fill="#0000FF") 
p 
+0

使用ggplot2?或者沒關係? – Fernando

+0

我想使用ggplot2。 – Klaus

+0

@克勞斯我不完全確定你想要什麼。你只是試圖在視覺輔助圖的頂部添加一條平滑線,還是應該以某種特定方式計算線?你可以添加一條平滑線......'p + stat_smooth(aes(y = y,color = key),se = FALSE,span = .3)' – aosmith

回答

0

使用..density ..做轉型:

data = data.frame(x = rnorm(500)) 

ggplot(data) + 
geom_histogram(aes(x = x, y = ..density..)) + 
geom_density(aes(x), colour = I('red')) 

爲您的數據:

ggplot(df) + 
geom_histogram(aes(y, ..density.., fill=key)) + 
geom_density(aes(y, colour = key)) 

,並儘量避免像 'DF' 名稱(df是一個R函數我猜)

+0

這不是一個機會,因爲後面我會將它與一個條圖表像http://www.r-bloggers.com/ggplot2-back-to-back-bar-charts/ – Klaus

+0

我不知道我是否得到它,但你可以用* geom_bar替換* geom_histogram *(aes( y,fill = key))* – Fernando

+0

沒有這是我的問題,這是不可能的,見'p <-ggplot(df,aes(x = x)) p <-p + geom_bar(subset =。(key ==「 A「),aes(y = y),stat =」identity「,fill =」blue「,alpha = 0.2) p <-p + geom_bar(subset =。(key ==」B「),aes(y (y,color = key)) p p = -y + – Klaus