查看原文
其他

邪恶的曲线

2016-12-21 Y叔 biobabble

今天终于可以声明原创了,哇卡卡,来点限制级的,只群发给男童鞋!


这是好久之前果壳性情上发的一个函数曲线,我们很容易在R里面把它画出来,有两个参数,所以我们定义函数,传入两个参数,返回值是x和y的函数。


f <- function(a, b) function(y) a * y * log(y, base=10) -1/b * exp(-(b*y - b/exp(1))^4)


我分别试了5组参数:


y <- seq(0, 1, length.out=100) cols = colorspace::rainbow_hcl(5) d1 <- data.frame(x = f(3, 30)(y),   y=y, color=cols[1]) d2 <- data.frame(x = f(2.8, 33)(y),   y=y, color=cols[2]) d3 <- data.frame(x = f(2.5, 36)(y), y=y, color=cols[3]) d4 <- data.frame(x = f(2.2, 40)(y), y=y, color=cols[4]) d5 <- data.frame(x = f(2, 50)(y),   y=y, color=cols[5]) df <- list(d1, d2, d3, d4, d5) ggplot(rbind(d1,d2,d3,d4,d5)) + geom_path(aes(x, y, color=I(color))) + xlab(NULL) + ylab(NULL)


于是这邪恶的图就出来了:




可以把这5个size做成动图或者视频,一般情况下,略显生硬,所以我们需要搞些中间状态,让变化顺畅一点,这个可以用用tweenr来做,下面是代码,老司机可以开车了!貌似现在可以给文章留言了,大家可以试一下。


library(tweenr) df2 <- tween_states(df, tweenlength=2, statelength=1, ease=rep('cubic-in-out', 4), nframes=100) p <- ggplot(data=df2) + geom_path(aes(x, y, color=I(color), frame=.frame)) + xlab(NULL) + ylab(NULL) animation::ani.options(interval = 1/24, ani.height=1000, ani.width=500) gganimate::gganimate(p, 'breast.mp4', title_frame = F)


https://v.qq.com/txp/iframe/player.html?vid=r1311ie2sr5&width=500&height=375&auto=0

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存