此代码在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无法通过图形设备创建文件?