Как построить сплайны с помощью ggplot2? - PullRequest
3 голосов
/ 24 мая 2011

У меня есть некоторые данные, из которых я хочу составить гистограмму. Однако я хочу представить эту гистограмму с линией. Я пытался использовать freq_poly из ggplot2. Тем не менее, производимая линия довольно неровная. Я хочу знать, возможно ли использовать splines с ggplot2, чтобы полученная в freq_poly линия была более гладкой.

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

Это то, чего я хочу достичь. Но я хочу сделать это, используя ggplot2.

1 Ответ

4 голосов
/ 24 мая 2011

Я предполагаю, что вы пытаетесь использовать функцию 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")
...