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
每天至少四顿饭: