在 R 中生成动画彗星图

2024-01-07

R 中是否有任何库或函数可以简化彗星图的生成?我的意思是一个动画图,其中头部(箭头)跟踪粒子的路径,其主体(线)在头部后面尾随,其长度与粒子的速度成正比。

Matlab 有一个非常简单的 comet() 函数,记录如下:http://www.mathworks.co.uk/help/matlab/ref/comet.html http://www.mathworks.co.uk/help/matlab/ref/comet.html

显示当前风速的彗星图的一个非常好的示例如下:http://earth.nullschool.net/ http://earth.nullschool.net/

我意识到这是一个非常普遍的问题,但到目前为止我在 R 中什么也没发现。


这个怎么样animation

# required libraries
require(animation) # NB you must install ImageMagick
require(ggplot2)
require(grid) # for arrow()

# create a path with variable speed (1 point per time unit)
path<-data.frame(time=1:100,x=1:100,y=c((1:50)^2,(50:1)^2))
# plot it, just to see
ggplot(path)+geom_point(aes(x,y))
# work out the path and previous points of each observation
# average of previous 2 steps, but could be any number
steps<-2
path$prevx<-c(rep(0,steps),path$x[1:(nrow(path)-steps)])
path$prevy<-c(rep(0,steps),path$y[1:(nrow(path)-steps)])
path$prevtime<-c(rep(0,steps),path$time[1:(nrow(path)-steps)])
# then calculate the velocity at each point, and the angle (for the arrow)
# note we could just plot point to point, but that assumes the time units are regular
path$v<-((((path$x-path$prevx)^2)+((path$y-path$prevy)^2))^0.5)/(path$time-path$prevtime)
path$atan2<-atan2((path$x-path$prevx),(path$y-path$prevy))

# OK, we now have all the data; let's plot first without animation
ggplot(path)+geom_segment(aes(x = x-(v*sin(atan2)), y = y-(v*cos(atan2)), xend = x, yend = y),
                          arrow=arrow(length = unit(0.5, "cm")) ,
                          alpha=0.5, size=2,
                          color="blue")
# create function which takes a vector of rows (to plot a subset of arrows)
plot_arrow<-function(vec){
  alphas<-rev(1/(1:length(vec))^1.5) # this create an alpha scale
  g<-ggplot(path[vec,])+geom_segment(aes(x = x-(v*sin(atan2)), y = y-(v*cos(atan2)), xend = x, yend = y),
                               arrow=arrow(length = unit(0.5, "cm")) , # create arrow
                               alpha=alphas, size=2,
                               color="blue")+
    coord_cartesian(xlim=c(min(path$x),max(path$x)),ylim=c(min(path$y),max(path$y))) # fix width
  print(g)
}

# then create the animated GIF with 5 arrows per frame
saveGIF({
  lapply(1:nrow(path),function(x)plot_arrow(max(1,x-5):x))
},movie.name="comet.gif",interval=0.2)

PS:您还可以通过更改来删除尾部箭头plot_arrow()函数调用如下[arrow()调用'geom_segment']:

arrow=arrow(length = unit(c(rep(0,length(vec)-1),0.5), "cm"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中生成动画彗星图 的相关文章

  • R 中的闭包类似于 Python

    首先考虑以下 Python 代码 该代码计算函数被调用的次数 def counter fn count 0 def inner args kwargs nonlocal count count 1 print Function 0 was
  • R 提交到 CRAN:构建包的 R 版本?

    我想向 CRAN 提交一个包裹 在里面CRAN 存储库政策 http cran r project org web packages policies html它指出 当发布新的 R x y 0 版本时 R CMD 检查给出 错误 的包将被
  • 如何从闪亮模块调用闪亮模块?

    如何从闪亮模块中调用闪亮模块并传递第一个模块中的选择 作为一个例子 我编写了一个应用程序来显示星球大战主题dplyr在 DT data 表中 模块StarWars 来自同一数据集的相关电影应显示在另一个子选项卡 模块电影 的另一个 DT d
  • R 因子变量之间的相关性

    我想知道是否有一种简单的方法来识别与另一个变量 100 相关的特征 因子变量 因此 在示例中 该过程将匹配 颜色 和 车辆 以及 植物 和 高度 color lt c black black blue blue yellow vehicle
  • 在R中,如何平均空间网格正方形上的空间点数据

    现在设法解决问题 我有一组大约 50 000 个点 它们具有坐标和一个与其关联的值 我希望能够将点放入网格中 对落在网格正方形中的所有点的关联值进行平均 所以我想最终得到一个对象来识别每个网格方块并给出网格方块内的平均值 如果有帮助的话 我
  • 如何调整ggplot2中的标题位置

    这是代码 require ggplot2 require grid pdf a pdf png a png a lt qplot date unemploy data economics geom line opts title A b l
  • 在字符串中每个字母后面添加数字

    我有几个具有固定格式的字符串 格式为一个字母后跟一个数字 例如 A3B1C7D1 但是 如果字母后面的数字为 1 则字符串将写为 A3BC7D 我想做的是插入数字 1 然后将字符串转换为A3BC7D to A3B1C7D1 我的示例数据是
  • R:data.table 与 merge(aggregate()) 性能

    或者更一般地说 它是DT SD by versus merge aggregate 话不多说 这里是数据和示例 set seed 5141 size 1e6 df lt data table a rnorm size b paste0 sa
  • 添加带有错误的弹出窗口,警告闪亮

    有什么办法可以添加一个popup 可关闭的窗口 其中包含警告或其他消息Shiny 我用来构建 Web 应用程序的 R 包 我已经寻找了一段时间但没有任何结果 虽然我不认为有任何本地可用的东西shiny 你可以尝试添加jQueryUI到您的应
  • 在 R 中使用 randomforest() 进行分类?

    我最初有一个由 N 行 12 列组成的数据框 最后一列是我的班级 0 或 1 我必须将整个数据框转换为数字 training lt sapply training temp as numeric 但后来我认为我需要将类列作为因子列来使用 r
  • 使用变量在 r 中像 aes_string 一样选择轴

    我试图提供一个带有列名的变量来创建一个plotly图表 类似于ggplot2 aes string 不知怎的 我被困住了 plot ly iris x Sepal Length y Sepal Width works as expected
  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col
  • 返回带有参数的函数的函数

    创建一个应返回包含原始函数参数的函数时 我应该如何处理 例如考虑这个函数 a lt function value function x x value 我希望它返回我在结果函数的参数中指定的值 如下所示 b lt a 3 gt b gt f
  • 在 R 中读取 Stata 13 文件

    有没有办法在 R 中读取 Stata 版本 13 数据集文件 我尝试执行以下操作 gt library foreign gt data read dta TEAdataSTATA dta 但是 我收到一个错误 read dta TEAdat
  • Swift Animate 持续时间在 CGAffineTransform 中不起作用

    当我用 1 秒的动画翻译一个视图时 它不起作用 但当我执行 transform identity 时 它工作正常 这是我的代码 func hideCarousel UIView animate withDuration 1 animatio
  • 使用 ggplotly(ggplot2 withplotly)时可以去掉注释中的跟踪标签吗?

    使用ggplotly时是否可以删除注释中的跟踪标签 例如 library ggplot2 library plotly g lt ggplot iris aes Sepal Width Sepal Length geom point ann
  • 仅在具有重复块名称的另一个 Rmarkdown 文档中运行一个 Rmarkdown 文档中的代码

    我正在 Rmarkdown 中编写一系列相互补充的报告 我想将上一份报告的结果纳入我目前正在编写的报告中 我看到其他建议使用的问题purl从 Rmarkdown 文档中提取 R 代码然后运行它 所以我尝试了以下操作 r read previ
  • 如何判断某个软件包是否已经安装?

    当我安装 yaml 包时 如果之前已经安装过 RStudio 则会弹出一条烦人的错误消息 如何判断该软件包是否已安装 以便我可以在代码中决定是否安装该软件包 该消息位于弹出窗口中 内容如下 此安装将更新的一个或多个软件包 当前已加载 在更新
  • Flipboard 动画

    有谁知道如何构建像 Flipboard 应用程序一样的翻转动画 谢谢 如果你指的是翻页过渡 请查看我编写的 OpenGL 过渡类 https github com epatel EPGLTransitionView https github
  • 通过 RSelenium 单击按钮

    我正在尝试使用 Rselarium 和 Rvest 来抓取 REI 的评论 吊床 我想点击底部的按钮 x 次 这样我就可以抓取所有评论 我有点失落 这是我到目前为止所拥有的 如果您也知道如何在取景器中预览您正在做的事情 而不是屏幕打印 那就

随机推荐

  • Android 5.0 上点击 Switch 崩溃

    在 Android 5 0 中单击我的应用程序中的开关时 应用程序崩溃并显示如下所示的 logcat logcat 没有在其中的任何地方引用我的代码 并且此开关在所有以前的版本上都运行良好 除了背景颜色之外 该开关看起来是不可见的 并且只有
  • 在 Unix shell 中将一列数字相加

    给定文件列表files txt 我可以得到它们的尺寸列表 如下所示 cat files txt xargs ls l cut c 23 30 会产生这样的结果 151552 319488 1536000 225280 我怎样才能得到tota
  • 如何确定导致 Windows Installer 重复自我修复的原因?

    如何仅记录导致 Installshield 2008 所做的 MSI 文件通过 重新安装 的更改自我修复 自修复的原因是什么 如何使用 Installshield 2008 禁用 MSI 自我修复 自我修复 简单简短的解释 如果我删除文件
  • SampleSyncAdapter 断点不起作用

    我正在使用 Eclipse 来了解 SampleSyncAdapter 示例的工作原理 我无法让断点发挥作用 我在多个位置设置了断点 但没有一个被击中 例如 AuthenticatorActivity onCreate 永远不会被调用 有人
  • 从 pdf 中提取表格

    我正在尝试从这个表中获取数据PDF https www dropbox com s y3nivxhjvvzva7d test1 pdf dl 0 我尝试过 pdfminer 和 pypdf 运气不错 但我无法真正从表中获取数据 This i
  • jQuery 触发器在 IE 中不起作用。为什么?

    XynBp0 find input each function if this attr value Cancel this trigger click 在 IE7 中不起作用 这很奇怪 但尝试创建一个自定义事件 XynBp0 input
  • 如何通过引用动态设置多维数组中的值

    这整个晚上都让我发疯 基本上 我需要在清理值后在多维数组中设置一个特定值 然后在验证值后再次设置 也许 取决于验证 如果验证失败 则需要将值设置为空字符串 假设我有这个帖子数组 data should be int yjd 清理该值后fil
  • 在同构 React 应用程序中的快速中间件之间传递状态

    我有一个同构的反应应用程序 我想以某种方式在快速中间件之间传递状态 我有以下处理表单提交的快速路线 export const createPaymentHandler async req Request res Response next
  • 在 Android 中使用 Google Vision API 和 ARCore

    我正在寻找构建一个应用程序来检测某些对象 然后使用 ARCore 覆盖某些对象 是否可以使用Google的Vision API来实时检测物体 如果没有 我是否可以使用另一个具有对象检测 地标检测和 或 OCR 功能的库 None
  • Docker 登录身份验证令牌

    我想得到docker login授权自 docker config json文件 但我看不到auth我的令牌config json文件 这是我的码头版本 docker version Client Version 17 03 1 ce AP
  • android - 从相机拍摄的图像中获取图像

    我很好奇如何从 Android 中的 Gallery Camera 文件夹中获取图像 我正在查看文件管理器 但无法真正了解这些图像在文件系统中的位置 如果我进入文件管理器 我无法找到拍摄照片的确切位置 如果我转到图库应用程序 我会看到它们挂
  • 在 VS2008 中以不同用户身份调试应用程序

    我有一个应用程序在以管理员权限运行时运行良好 当用户运行时 从事件日志读取时出现问题 我想在调试器中运行代码 但不使用我的管理员设置 这在 Visual Studio 2008 中可能吗 在 Visual Studio 2010 中您可以使
  • 如何修复 com.android.builder.internal.aapt.AaptException:无法处理文件?

    我有最新版本的 Android Studio 截至 2016 年 9 月 21 日 当我在 Android Studio 中创建一个全新的项目并尝试构建它时 我收到以下构建错误 错误 com android builder internal
  • 在字典中使用不区分大小写的字符串?

    我需要一本字典 它的键是字符串 但忽略大小写 我已经反编译了 Dictionary 类型 它基本上创建了键的哈希码的哈希表 我无法对 string 进行子类化 因为它是原始类型 因此我创建了自己的类来用作键 struct StringCas
  • 如何将变量传递给SSIS中ODBC源的sql查询?

    我在 SSIS 的数据流任务中使用 ODBC 源 我只想从 ODBC 源选择最新数据 这是我的查询 从 ODBC 表中选择 其中日期 gt 用户 日期1 但我在解析查询时遇到错误 这是什么替代方法 我如何传递变量以及如何创建有效变量来传递查
  • 保存图表失败!验证 Graphviz 是否已安装并位于您的路径中,或使用 filetype=dot

    当我跑步时rake db migrate我收到这个错误 rake aborted Saving diagram failed Verify that Graphviz is installed and in your path or use
  • Openai /v1/completions 与 /v1/chat/completions 端点

    class OpenaiClassifier def init self api keys openai api key api keys Openai def get ratings self review prompt f Rate t
  • 如何对所有文本组件使用 Ctrl+Z 和 Ctrl+Y?

    In fact i know how to implement using CTRL Z Undo and CTRL Y Redo with one JTextField But i have hundreds of Text Compon
  • MSBuild - 从命令行调用目标

    有谁知道如何获取从 MSBuild 命令行调用的 TARGET t 的名称 有几种类型的目标可以调用 我想在向用户发出的通知中使用该属性 Example msbuild Project proj t ApplicationDeploymen
  • 在 R 中生成动画彗星图

    R 中是否有任何库或函数可以简化彗星图的生成 我的意思是一个动画图 其中头部 箭头 跟踪粒子的路径 其主体 线 在头部后面尾随 其长度与粒子的速度成正比 Matlab 有一个非常简单的 comet 函数 记录如下 http www math