r - 动画比例参数
问题描述
我正在寻找一种优雅/简洁的方式来在 R 中制作动画,以改变我的y
比例转换中的参数。
假设我有这个数据和图表:
library(tidyverse); library(gganimate); library(scales)
my_data <- tibble(time = 1:100, value = (5*sin(time/100))^6 + (1E3*sin(time/5)))
scale_plot <- function(sig) {
ggplot(my_data, aes(time, value)) +
geom_line() + labs(title = paste("sigma =", {{ sig }})) +
scale_y_continuous(trans = pseudo_log_trans(sigma = sig))
}
根据我是要强调全局效果还是局部效果,我可能会选择在 中使用不同的sigma
参数scales::pseudo_lot_trans()
:
scale_plot(20000) # pretty close to linear
scale_plot(200) # toward log
我想要一种优雅/简洁的方式来制作在它们之间切换的动画。我遇到过使用循环生成一系列静态图像的方法,然后将它们编译成 GIF gifski
。animation
(请参阅我对另一个问题的回答。)理想情况下,我想找到一种使用 的方法gganimate
,但到目前为止,我只知道如何为数据中的变化或视口中的变化(例如使用gganimate::view_manual
)设置动画,而不是参数的转变。有没有比“手动”构建框架更简洁的方法?
解决方案
采用我对另一个问题的回答,这可以通过创建框架然后使用animation
包组合它们来解决。有没有更好的方法我忽略使用gganimate
?
library(animation); library(Cairo)
sig_seq = (10:150)^2
oopt = ani.options(interval = 1/10)
CairoPNG(filename = ani.options("img.fmt")) #using Cairo device for smoother antialiasing
saveGIF({for (i in 1:length(sig_seq)) {
print(scale_plot(sig_seq[i]))
print(paste0(i, " out of ",length(sig_seq)))
ani.pause()}
},movie.name="sigma_anim.gif", ani.width = 300, ani.height = 200)
推荐阅读
- flutter - 错误:参数类型 'void Function()?' 不能分配给参数类型 'void Function(String?)?'
- go - 如何在 time.Format 中删除毫秒值中的点
- reactjs - 自定义过滤器选项 React 数据网格
- python - 无法在 python 中使用 pandasql 在 redshift 中创建临时表
- angular - angular中称为私有方法jasmin测试的公共方法
- jmeter - --start-offset --end-offset 在 JMeterPluginsCMD.bat 命令中的用法
- javascript - 在选择列表项或单击组件外部时反应关闭下拉菜单
- android - For how long can a Worker in Android keep retrying doing a request?
- unity3d - 从相机到鼠标 Unity 3D 绘制光线?
- r - 在 R 中预测曲线上的值