d3.js和百度的echarts能够在网页端利用js代码绘制出各类型漂亮的图形。该类图形通常在网页chart容器中,以canvas或svg节点id所标记。

在网页中,绘制的通常是矢量图形。不会随着网页放大而失真,但采用常规截图的方式保存图片,失真无法避免。因此,人们通常采用各种形式的js代码将网页中的svg图保存到本地。

本人近期因为一个项目展示的需要。产生了将d3.js绘制的svg图保存到本地而不失真的需求。在Stack Overflow上有多个解决办法,但是遗憾的是都无法实现我的需求,原因是我的网页图片标签是通过js函数写到网页上的。在网页源代码中只能看到js包含和调用,而看不到各种标签。因此,凡是采用js代码写本地图片的方法都失败了。

我无意中在github上看到了一个简便的一键式解决办法。特引用至此,供有需要的人士参考。

该办法的原始网址是: http://nytimes.github.io/svg-crowbar/

名称:SVG Crowbar

功能:基于google Chrome 的小标签应用(只能用于Google Chrome浏览器)。

1、将 SVG Crowbar (版本1)  或 SVG Crowbar 2 (版本2)拖至Google Chrome浏览器的标签栏.

2、点开需要下载svg标签图的网页,然后点击svg crowbar标签,即可解析出网页中svg node,然后下载保存即可。

我是利用版本2成功的。如下图,完美解析出我的svg node,直接点download就行了。一键式操作,简单便捷。再也不用去调试各种js代码了。

d3.js和百度的echarts能够在网页端利用js代码绘制出各类型漂亮的图形。该类图形通常在网页chart容器中,以canvas或svg标签所标记。在网页中,绘制的通常是矢量图形。不会随着网页放大而失真,但采用常规截图的方式保存图片,失真无法避免。因此,人们通常采用各种形式的js代码将网页中的svg图保存到本地。本人近期因为一个项目展示的需要。产生了将d3.js绘制的svg图保存...
SVG 撬杠库 一个独立的3.5Kb JS 客户端库,基于Chrome。 该库提供了触发具有内联所有样式的给定 SVG 文件 下载 的功能,以使其在与原始HTML页面独立打开时看起来相同。 在 下载 之前,也可以使用该库将 SVG 转换为PNG。 import download Svg from ' svg -crowbar' ; download Svg ( document . querySelector ( ' svg ' ) ) ; import { downloadPng } from ' svg -crowbar' ; downloadPng ( document . querySelector ( ' svg ' ) , 'my_ svg ' , { css : 'internal' } ) ; download SVG / downloadPNG函数每个都有三个参数: download SVG (
downloadImg() { // 将当前canvas转换为png 图片 var serializer = new XMLSerializer(); var source = serializer.serializeToString(this. svg .node()); source = '<?xml version="1.0" standalone="no"?>\r\n' + so...
npm install bower install 测试依靠Karma测试运行程序。 如果您想在开发过程中使用Karma自动监视并重新运行测试文件,则最简单的方法是在全局范围内安装Karma并从CLI运行它。 npm install -g karma karma start 要在Firefox中运行测试,只需一次,就像CI那样: npm test 浏览器支持 谷歌浏览器(最新) 歌剧(最新) Firefox 4+ Safari 5+ Internet Explorer 8+
最近在做批量数据分析,利用pandas的DataFrame时,有一个需求,需要根据一列的取值进行判断,然后将python运行的状态信息写入另一列。结果发现多次写入均不成功。然后开始各种搜索,并没有找到合适的答案。其中一篇较为接近的文章是遇到我类似的问题,但下面并没给出合理的解决办法。(原文地址:https://ask.csdn.net/questions/773703)
好的,我可以为您介绍一下 绘制 力导向 的方法。 d3.js 是一个非常流行的 JavaScript 库,它提供了丰富的绘 功能,包括 绘制 力导向 。 首先,您需要定义一个包含节点和链接信息的数据集。节点可以是一个对象,包含其名称和其他属性,链接可以是一个具有源节点和目标节点的对象。例如: ``` javascript var nodes = [ { name: "A", group: 1 }, { name: "B", group: 2 }, { name: "C", group: 2 }, { name: "D", group: 3 } var links = [ { source: "A", target: "B", value: 1 }, { source: "B", target: "C", value: 2 }, { source: "C", target: "D", value: 3 } 然后,您需要定义一个 SVG 容器来容纳您的 形: ``` javascript var svg = d3.select("body").append(" svg ") .attr("width", width) .attr("height", height); 接下来,您可以使用d3.forceSimulation()方法来创建一个力导向 的仿真器,并使用d3.forceLink()和d3.forceManyBody()方法来定义链接和节点之间的力。 ``` javascript var simulation = d3.forceSimulation() .force("link", d3.forceLink().id(function(d) { return d.id; })) .force("charge", d3.forceManyBody()) .force("center", d3.forceCenter(width / 2, height / 2)); 最后,您可以使用d3.select()和d3.selectAll()方法来选择和 绘制 节点和链接。 ``` javascript var link = svg .append("g") .attr("class", "links") .selectAll("line") .data(links) .enter().append("line") .attr("stroke-width", function(d) { return Math.sqrt(d.value); }); var node = svg .append("g") .attr("class", "nodes") .selectAll("circle") .data(nodes) .enter().append("circle") .attr("r", 5) .attr("fill", function(d) { return color(d.group); }) .call(d3.drag() .on("start", dragstarted) .on("drag", dragged) .on("end", dragended)); 以上是一个简单的力导向 绘制 过程,如果您需要更多高级的控制,您可以查看 d3.js 的官方文档。
论文笔记二:Weakly Supervised Learning of Instance Segmentation with Inter-pixel Relations 每天至少四顿饭: 应该是首发的吧,不然怎么能被CVPR收录呀