绘制和保存R图

绘制和保存R图,r,bash,R,Bash,我有一个bash脚本,在命令运行时跟踪内存使用情况。它生成所需的命令,然后用column1=“程序使用的内存(gigs)”写入日志,第2列是到目前为止所用的时间(以秒为单位)。e、 g 31.282 1470 31.565 1480 31.848 1490 31.989 1500 32.273 1510 32.414 1520 32.697 1530 32.980 1540 33.122 1550 33.405 1560 6.511 1570 6.935 1580 7.502 1590 7.92

我有一个bash脚本,在命令运行时跟踪内存使用情况。它生成所需的命令,然后用column1=“程序使用的内存(gigs)”写入日志,第2列是到目前为止所用的时间(以秒为单位)。e、 g

31.282 1470
31.565 1480
31.848 1490
31.989 1500
32.273 1510
32.414 1520
32.697 1530
32.980 1540
33.122 1550
33.405 1560
6.511 1570
6.935 1580
7.502 1590
7.926 1600
8.351 1610
8.775 1620
9.059 1630
9.483 1640
9.908 1650
10.333 1660
我要做的是等待进程完成,然后使用R绘制一个内存使用率随时间变化的图表,并将其保存在当前目录中。我在玩R,我确切地知道我需要使用什么命令:

> heisenberg <- read.csv(file="4644.log",head=FALSE,sep=" ")
> plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="Memory Usage Over Time",xlab="Time (seconds)",ylab="Memory (gigabytes)")
> text(max(heisenberg$V2),max(heisenberg$V1),max(heisenberg$V1)) #Displays max value
>海森堡图(海森堡$V2,海森堡$V1,type=“o”,col=“red”,main=“随时间的内存使用”,xlab=“时间(秒)”,ylab=“内存(千兆字节)”)
>文本(最大值(海森堡$V2)、最大值(海森堡$V1)、最大值(海森堡$V1))#显示最大值
但我一直坚持的是将图形保存为jpg或png。或者如何在bash脚本中执行此命令。我绝对需要用R语言编写另一个脚本并运行它吗?这是否可能做到一应俱全


编辑 这是我的脚本的代码

png("mem_usage_2965.png",height=800,width=800)
heisenberg <- read.csv(file="2965.log",head=FALSE,sep=" ")
plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="oases_k85",xlab="Time (seconds)",ylab="Memory (gigabytes)")
text(max(heisenberg),max(heisenberg),max(heisenberg))
dev.off()
png(“mem_usage_2965.png”,高度=800,宽度=800)

海森堡你只是在看简单的问题吗?

基本上,您可以告诉R使用以下命令开始保存.png:

png(file="blah.png")
然后使用:

dev.off()

恢复正常。

将绘图调用换行:

jpeg("myplot.jpg")
....plot code here....
dev.off()

有关其他参数的详细信息,请参见各自的帮助页:
?png

对于PNG,这将是:

png("my_plot.png", height = 800, width = 600)
plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="Memory Usage Over Time",xlab="Time (seconds)",ylab="Memory (gigabytes)")
text(max(heisenberg$V2),max(heisenberg$V1),max(heisenberg$V1)) #Displays max value
dev.off()
至于在bash脚本中运行它,您需要调用R来运行包含R代码的脚本,以加载数据并绘制绘图。为此,有几个选项,其中两个是:

R CMD BATCH --no-save --no-restore my_script.R
或者使用
Rscript

Rscript my_script.R

其中
my_script.R
是一个文本文件,其中包含生成绘图所需的语法上有效的R代码。

那么在我的bash脚本中有什么方法可以做到这一点呢?是否可以在命令行中使用R?有关R的脚本接口的详细信息,请参见
?RScript
。还有其他方法,即使用
R CMD BATCH
。但这是另一个问题,所以您应该在这个主题上问另一个问题。@LanceH不是在bash脚本中,您不能,您需要调用R来运行R代码。例如,您可以将您的代码片段与RScript结合起来,以调用R并运行
.R
文件的内容。
R CMD BATCH
似乎就是我要找的。我可以通过在bash脚本中进行回音来输出r脚本。然后我可能会以某种方式调用脚本。
Rscript
可能更合适。为什么不计算
heisenberg$V1
heisenberg$V2
max()
?此时,您正在计算一个值,该值是
海森堡
数据框中两个坐标(x和y)的最大值,因此难怪它不会出现在绘图上;它在情节之外。我想您需要:
带有(海森堡,text(max(V2),max(V1),max(V1))
至少您展示的原始代码片段建议了这一点。你是否意识到新代码与原始代码不匹配?是的?仔细观察,是的,我现在确实意识到了差异。这是因为我只是打开了bash脚本输出的script.r,但是我忘记了转义$。因此,它们被解释为空变量。我会像你说的那样用这个声明试试。为了清楚起见,我想要的是用文本显示在图形上显示最大值。
Rscript my_script.R