Perl Statistics::R生成的绘图图片(jpeg)为空白

5
我目前正在使用ActiveState Perl 5.14和R项目版本2.13.2。在Perl中,我正在使用Statistics::R 0.08版本。根据ActiveState的说法,较新版本的Statistics:: R(通过0.24)未能通过审查,因此无法通过PPM获得。
历史:我已经成功地使用Perl访问R进行分析了一段时间。现在我想生成结果的JPEG图像以便于可视化。
这是问题所在:我可以从R控制台成功生成图像。但是,当我通过Perl运行相同的命令时,我只得到一个空白图像。我的控制台代码包括(当然是简化版):
  x<-c(1,2,3,4,5)
  y<-c(5,4,3,2,1)
  jpeg("C:/temp.jpg")
  plot(x,y)
  dev.off()

我的Perl命令包括(也是简单的):
   $R = Statistics::R->new();
   $R->start_sharedR
   $R->send("x<-c(1,2,3,4,5)");
   $R->send("y<-c(5,4,3,2,1)");
   $R->send('jpeg("C:/temp.jpg")');
   $R->send("plot(x,y)");
   $R->send("dev.off()");

任何建议?我知道Perl有其他可访问的绘图选项。 我已经排除了一些(GD Graph)因为X轴数据没有被视为数字。 如果可能的话,我更愿意将其保留在R中,因为我已经在该软件包中与分析进行交互。谢谢!

尝试使用Cairo包(例如CairoJPEG()),内置函数如jpeg可能取决于您运行它的后端,因此某些功能可能在R GUI中可用,但在嵌入式时不可用(我没有检查这个实例,但是Cairo可以无论后端如何工作)。 - Simon Urbanek
我运行了你提供的 Perl 代码(同时启用 strictwarnings),它工作得很好。根据之前的经验,我知道 Statistics::R 曾经在我的系统上在将图形写入图像时遇到问题。请确保你使用的 Statistics::R 版本是最新的。 - user554546
使用ActiveState,我相信我的限制是0.08。 - Ryan
尝试使用草莓Perl。它是Windows上最优秀的Perl安装程序。 - user554546
Ryan,只是提醒一下,应该写成Perl而不是PERL。 - Joel Berger
2个回答

4

忘掉Statistics::R吧,直接使用系统调用。至少我是这么做的!

my $path_to_r = "C:/Program Files/R/bin/Rscript.exe";

my $cmd = "x<-c(1,2,3,4,5);";
$cmd .= "y<-c(5,4,3,2,1);";
$cmd .= 'jpeg("C:/temp.jpg");';
$cmd .= "plot(x,y);";
$cmd .= "dev.off()";

system($path_to_r . " -e '" . $cmd . "'");

如果你的R脚本变得比较复杂,或者需要从参数中获取输入,那么将它写入一个文件,并使用Rscript.exe来运行该文件。

同意。这就是我最终做的事情。我无法让草莓PERL工作;有太多损坏的依赖关系。 - Ryan

0

对我来说,使用Statistics R :: 0.27很好,但是使用0.08就不行了,这是我在Active perl的包管理器中找到的唯一版本。为了安装0.27,我必须使用cpan命令行。测试失败,但安装很好。真是救星。

(顺便说一句,我是一个相对新手。使用cpan命令行非常容易。
cpan命令行键入i / Statistics-R /,然后 安装FANGLY / Statistics-R-0.27.tar.gz(或任何相关文件。我使用的是Windows系统,所以RSPerl很让人恼火,不能用。我注意到最新的Statistics :: R版本日期为2012年3月,因此先前记录的某些问题(如管道?)可能已得到解决。您还可能需要安装“制造商”;在我的情况下,它是“dmake”,而不是“nmake”。非常容易,您可以从M $网站获取一个版本的make,并将其复制到PERL \ bin dir中。但是,其他地方提供了有关此帮助的信息。希望这可以帮助!)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接