d3.js - 为什么 phantomjs page.render 不捕获我的 D3 svg?
问题描述
为什么我的 D3 可视化没有被 phantomjs 捕获?这是此页面上唯一未捕获并保存为 png 的元素。
我的 oncoprintsave.js 文件:
var page = require('webpage').create();
page.viewportSize = { width: 1920, height: 1080 };
page.open('https://jonkatz2.github.io/2019/03/11/D3-oncoprint', function(status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit(1);
} else {
window.setTimeout(function () {
page.render('oncoprint.png');
phantom.exit();
}, 2000);
}
});
在我的 Ubuntu 控制台中,我输入:
phantomjs oncoprintsave.js
这只是一个代表性的例子。我正在制作一个闪亮的应用程序,我计划在其中将一些 D3 可视化捕获为 png(服务器端)并将它们包含在 rmarkdown-PDF 报告中。我试过 r2d3::save_d3_png 并得到空白图像,我试图通过直接调用 htmlwidgets::saveWidget 来解决它,然后在生成的 html 页面上向 phantomjs 发送系统调用。
我怀疑我的 D3 脚本中的错误导致它失败,但我对 D3 太陌生,无法识别它,如果我添加 --debug=true 选项,则不会出现错误。
解决方案
我从来没有解决这个问题,但我切换到 chrome 并得到了我想要的:
google-chrome --headless --disable-gpu --screenshot --window-size=1920,1080 https://jonkatz2.github.io/2019/03/11/D3-oncoprint