我使用ggplot2时,png()... dev.off()在RInside中不起作用

时间:2018-07-09 11:13:52

标签: r rcpp rinside

此代码在R中效果很好

library(ggplot2);
tbl <- data.frame( name = c ("AAA", "BBB"),  qty = c(100, 150)  );
p <- ggplot(data = tbl ) + geom_bar(stat='identity', aes(x =name, y = qty));
png(file='sample.png', bg ='transparent', width = 300, height = 300 );
p;
dev.off();

但是,如果我像这样从C ++评估这段代码:

std::string code =""
    "library(ggplot2);"
    "tbl <- data.frame( name = c ("AAA", "BBB"),  qty = c(100, 150)  );"
    "p <- ggplot(data = tbl ) + geom_bar(stat='identity', aes(x =name, y = qty));"
    "png(file='sample.png', bg ='transparent', width = 300, height = 300 );"
   "p;"
   "dev.off();"

myR.parseEval( code );

未创建png文件。

我研究了这个问题,发现问题取决于ggplot2。例如简单的代码:

std::string code =""
   "png(file='sample.png', bg ='transparent', width = 300, height = 300 );"
   "plot( 1:20 );"
   "dev.off();"

效果很好。如果我从“ grid”包中使用grid.circle(),也会创建文件。 ggsave()函数也很好用。

为什么ggplot无法通过图形设备创建文件?

0 个答案:

没有答案