代码之家  ›  专栏  ›  技术社区  ›  Michael Gruenstaeudl

将networkD3图形导出为矢量图形

  •  0
  • Michael Gruenstaeudl  · 技术社区  · 5 年前

    假设通过R库生成的网络图 networkD3 . 进一步假设您可以将该网络图保存为一个外部独立的HTML文件(参见第节) Output )或者,也可以通过R库进行渲染 htmlwidgets .

    你认为有什么方法可以将这样生成的网络导出为矢量图形(pdf或svg),而不管是在R内部还是外部?

    注意

    编辑1 : 跟随 suggestion by CJ Yetman ,我通过Firefox开发者版检查了HTML文件的DOM属性。使用此方法,可以具体查看SVG属性(请参见 this example ),但大部分都是空的。但是,我该怎么办 '从DOM中提取SVG' 如CJ Yetman所说?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Mikkel    5 年前

    这里有一些代码。。。假设有一个图表呈现到一个id为“watcher”的div中。

    <button onClick={() => alert(document.getElementById('watcher').innerHTML)} style={{ padding: '10px' }}>
        Show generated html/svg
    </button>
    

    Screen shot of alert showing SVG code

    上面是React的代码,但是可以适应任何环境。

    svgMarkup = document.getElementById('watcher').innerHTML
    

    基本上,它是一个字符串,然后您可以将其发送到后端进行保存,或者发送到文件。

        2
  •  0
  •   CJ Yetman    5 年前

    在浏览器中查看它,然后使用浏览器开发工具从DOM中提取SVG。。。一些浏览器(我认为Chrome)甚至允许您右键单击SVG以将其保存到本地驱动器。但它必须首先在浏览器中呈现,因为底层JavaScript是最终生成SVG的基础。

    使用类似 SVG Crowbar

        3
  •  0
  •   FatihSarigol    4 年前

    既然你提到了htmlwidget,我可以分享一下我是如何管理的。。

    我有我的 NetworkD3 shinyapps.io 并使用NetworkD3闪亮的应用程序模板,通过RStudio免费将您的代码插入他们的服务器)

    然后使用Opera浏览器打开绘图(不适用于Chrome),右键单击绘图并 Save as PDF... 这将给你矢量化的数字,你可以在不失去分辨率的情况下无限放大。

    enter image description here