0

我有一个包含数据集和关键字列表的 R 脚本。然后它根据每个关键字在数据集中出现的次数创建一个图,并将其保存为 png 图像。现在,我想让关键字列表动态化,即我希望关键字成为用户输入。不知何故,在我工作的环境中,碰巧一旦用户输入了关键字列表,我就会执行 R 脚本并向用户展示情节。现在,当用户输入更多关键字时,它们会附加到前一个列表中,并且由于关键字的完整列表被发送到 R 脚本,它会再次执行完整的任务。很明显,它也做了很多不必要的工作来查找第一次运行时存在的关键字。

例如,在第一次运行中,关键字列表:- “一”、“二”、“三”。在第二轮中,关键字列表:-“一”、“二”、“三”、“四”、“五”、“六”

在第二次运行中,它浪费了大量时间处理关键字“一”、“二”和“三”。由于数据集很大,关键字的数量也很大,因此执行起来需要很多时间。我的问题是,有没有办法可以防止这种情况,保留以前的情节并修改以前的情节以呈现新的关键字?

4

1 回答 1

0

从理论上讲,可以读取 png 文件并将其用作背景,然后向其添加额外的点/线,但这会比保存信息以创建绘图要复杂得多(并且可能会产生更丑陋的结果)只是从头开始重新创建情节。

为此(使用基本图形),您可以使用readPNGpng 包中的函数读取现有的 png 文件。plot.new然后使用和创建一个新图plot.window。然后,您需要使用par将绘图区域设置为整个设备区域。然后使用rasterImage将 png 文件绘制为背景。现在您需要par再次使用来设置绘图区域和用户坐标以匹配之前的 png 图(这可能是最复杂的部分,如果您没有正确设置,那么结果将是错误的)。然后你可以使用pointslines添加到情节。请注意,每次执行此操作时,第一个绘图中的点和标签的质量可能会降低(png 文件不会保存文本,而是有关要制作哪些像素的颜色的信息)。

最好只保存创建绘图所需的信息(如评论中所述),然后使用添加的信息重新创建绘图。

您还可以查看 ggplot2 包,该包存储所有信息以在对象中创建绘图,然后在print编辑时绘制它。您可以将(使用+)选项、数据等添加到绘图信息中,它将负责重新绘图。

于 2013-08-03T20:17:18.327 回答