为什么 phantomjs page.render 不捕获我的 D3 svg?

Why doesn't phantomjs page.render capture my 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