gpt4 book ai didi

R:使用新的点()或线()添加更新图 [xy]lims?

转载 作者:行者123 更新时间:2023-12-04 12:10:10 25 4
gpt4 key购买 nike

背景:

我正在运行蒙特卡罗模拟以显示特定过程(累积平均值)确实 不是 随着时间的推移收敛,并且经常在模拟中出现很大差异(随机变量的期望值 = 无穷大)。我想在折线图上绘制大约 10 个这些模拟,其中 x 轴具有迭代次数,y 轴具有到该点的累积平均值。

这是我的问题:

我将运行第一个模拟(每个模拟有 10,000 次迭代),并根据其当前范围构建主图。但通常其中一个模拟的范围比第一个模拟大几个数量级,因此该图超出了原始范围。所以,添加一组新的点或线后,有没有办法动态更新绘图的 ylim 或 xlim?

我能想到两个解决方法 为此: 1. 存储每个模拟,然后选择范围最大的模拟,并从中构建基础图(不优雅,我必须在内存中存储大量数据,但可能是笔记本电脑-友好 [[编辑:正如 Marek 指出的那样,这不是一个内存密集型示例,但是如果您知道一个很好的解决方案,它可以支持更多的迭代,从而成为一个问题(想想需要用于收敛的大得多的 MC 样本)然后直接跳入]] ) 2. 找到一个看起来可以构建它的漂亮版本的种子,并手动设置 ylim,这将使演示可重现。

当然,我坚持比我的解决方法更优雅的东西。希望这不是一个太普通的问题,因为我想这在 R 中的模拟中并不少见。有什么想法吗?

最佳答案

我不确定使用基本图形是否可行,如果有人有解决方案,我很想看看。然而,基于网格(lattice 和 ggplot2)的图形系统允许保存和更新图形对象。在ggplot2中非常容易。
require(ggplot2)
制作一些数据并获取范围:

foo <- as.data.frame(cbind(data=rnorm(100), numb=seq_len(100)))

制作一个初始 ggplot 对象并绘制它:
p <- ggplot(as.data.frame(foo), aes(numb, data)) + layer(geom='line')
p

制作更多数据并将其添加到绘图中
foo <- as.data.frame(cbind(data=rnorm(200), numb=seq_len(200)))

p <- p + geom_line(aes(numb, data, colour="red"), data=as.data.frame(foo))

绘制新对象
p

关于R:使用新的点()或线()添加更新图 [xy]lims?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com