1

此代码在 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.circle() 也会创建文件。ggsave() 函数也很好用。

为什么ggplot不能通过图形设备创建文件?

4

0 回答 0