我正在使用R.NET生成图(使用ggplot
),我想将这些图以PNG格式保存在磁盘上。每当我调用engine.Evaluate("ggsave('C:\path\to\file.png', myPlot)")
时,程序都会突然退出,退出代码为2,而没有任何内容写入磁盘。发生这种情况时,不会显示任何错误。也无法使用png()
或pdf()
将绘图写入文件。此问题并非特定于ggplot
,但是-我也无法存储通过本机plot
函数生成的图。
我可以将问题缩小到包含ggsave()
或png()
/ pdf()
的行:执行此行时,程序将中止。由于我实际上可以看到ggplot()
和plot()
两者生成的图,因此图本身似乎不是问题。
您应该能够使用以下C#代码重新创建我所描述的内容:
using RDotNet;
namespace Test {
class Program {
static void Main(string[] args) {
REngine.SetEnvironmentVariables();
REngine engine = REngine.GetInstance();
engine.Evaluate("png('D:\\Test.png')");
engine.Evaluate("plot(rnorm(1000))");
engine.Evaluate("dev.off()");
}
}
}
Apparently, this code should work without any issues。
运行时
png('D:\\Test.png')
plot(rnorm(1000))
dev.off()
在R中,将生成一个图并将其成功保存到Test.png。
我正在使用.NET Framework 4.6.1,R.NET 1.7.0和R 3.4.2。 R未安装在我的计算机上,并且尚未为R创建注册表项-我只是使用here中所述的R DLL。
答案 0 :(得分:0)
结果是,图像文件的路径中不能包含反斜杠。如果要将映像写入磁盘上的文件,则必须使用正斜杠,例如代替
engine.Evaluate("png('D:\\Test.png')");
使用
engine.Evaluate("png('D:/Test.png')");
也许这对其他人还是有帮助的。
答案 1 :(得分:0)
并不是您不能在答案中提到反斜杠。尽管正斜杠也可以解决您的问题,但我认为如果我解释其他解决方案,将来可能会有所帮助。
一次使用C#,一次用于R。
这样调用评估
engine.Evaluate("png('D:\\Test.png')");
将使用字符串:R
调用"png('D:\\Test.png')"
引擎,如果您对其进行评估,它就是: png('D:\ Test.png')。如果您在R中输入该字词,也会出现错误。
如果要运行R命令png('D:\\Test.png')
,您必须转义该字符串,该字符串在转义两个字符串后均带有两个反斜杠,则变为:"png('D:\\\\Test.png')"
< / strong>。