2011-05-23 212 views
3

我有一些數據,我想做一個直方圖。不過,我想用線表示這個直方圖。我曾嘗試使用ggplot2freq_poly。然而,生產線非常不規則。我想知道是否可以使用splinesggplot2,這樣freq_poly中產生的線會更平滑。如何用ggplot2繪製樣條曲線?

d <- rnorm(1000) 
h <- hist(d, breaks="FD", plot=F) 
plot(spline(h$mids, h$counts), type="l") 

這就是我想要完成的。但我想用ggplot2來做。

+3

'geom_smooth'和'geom_density'的某種組合可能是你想要的。你能提供一個可重複的例子嗎? – 2011-05-23 20:36:58

+1

你是不是指'spline()'? – Chase 2011-05-23 21:57:12

+0

@chase,或更好?spline – 2011-05-23 21:59:05

回答

4

我假設您正在嘗試使用spline()函數。如果不是,則忽略這個答案。

spline()返回兩個組件,x和y的列表對象:

List of 2 
$ x: num [1:93] -3.3 -3.23 -3.17 -3.1 -3.04 ... 
$ y: num [1:93] 1 0.1421 -0.1642 -0.0228 0.4294 ... 

我們可以簡單地把這些變成data.frame並繪製它們有可能是一個發燒友的方式來做到這一點,但這會工作:

h <- hist(d, breaks="FD", plot=F) 
zz <- spline(h$mids, h$counts) 
qplot(x, y, data = data.frame(x = zz$x, y = zz$y), geom = "line") 
+0

這是一個很好的答案,我應該儘管對此有所瞭解。唯一的問題是,這不一定會產生'樣條線'產生的平滑線。 – Sam 2011-05-24 10:23:29