如何使用ggplot2绘制样条曲线?

3

我有一些数据想要制作直方图,但是我想用线表示。我已经尝试使用ggplot2freq_poly,但是产生的线条非常不平滑。我想知道是否可能在ggplot2中使用splines,以使freq_poly产生的线条更加平滑。

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

我想要实现这个目标,但是我希望使用 ggplot2 来完成。


3
您可能需要将geom_smoothgeom_density结合使用。您能否提供一个可复制的示例? - Ben Bolker
1个回答

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 ...

我们可以将它们简单地转换为数据框并绘制它们。可能有更高级的方法,但这种方法也能起作用:
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")

这是一个很好的答案,我应该考虑一下。唯一的问题是,这种方法并不能像spline那样产生平滑的曲线。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接