2
如何平滑線條邊緣?我可以這樣做我的線情節:用樣條線連接點
data <- data.frame(x=1:10, y=c(22,23,21,25,23,24,20,27,22,24))
ggplot(data, aes(x,y)) +
geom_line(colour='forestgreen')
但是,我不喜歡鋒利的邊緣。有沒有辦法通過這些點繪製線條以便線條平滑?
如何平滑線條邊緣?我可以這樣做我的線情節:用樣條線連接點
data <- data.frame(x=1:10, y=c(22,23,21,25,23,24,20,27,22,24))
ggplot(data, aes(x,y)) +
geom_line(colour='forestgreen')
但是,我不喜歡鋒利的邊緣。有沒有辦法通過這些點繪製線條以便線條平滑?
這是做這件事:
library(ggplot2)
library(splines)
library(gridExtra)
dat <- data.frame(x=1:10, y=c(22,23,21,25,23,24,20,27,22,24))
plot.new() # have to do this unfortunately
res <- xspline(dat$x, dat$y, -0.25, draw=FALSE)
gg1 <- ggplot(dat, aes(x,y)) +
geom_line(colour='forestgreen') +
geom_point()
gg2 <- ggplot(data=data.frame(x=res$x, y=res$y), aes(x, y)) +
geom_point(data=dat, aes(x, y), size=1) +
geom_line(color="blue")
grid.arrange(gg1, gg2, ncol=1)
這是使用xspline
做插值。查看函數,看看調整-0.25
參數(範圍是-1
到1
)會做什麼。
它的工作原理。現在我只需要找出處理缺失值的方法。我在各個地方都有許多缺失值的時間系列。我想我只需要將時間序列分成不同的塊,以便它們不包含缺失值並計算每個塊的樣條曲線。謝謝您的幫助! – Nso
如果您願意使用ggplot2的github/devtools版本,我也將其封裝到一個包https://github.com/hrbrmstr/gggaldu中(以上pkg將會有更多ggplot2擴展) – hrbrmstr
使https: //github.com/hrbrmstr/ggalt(新名稱) – hrbrmstr