javascript – 使用d3.js的SVG到画布

前端之家收集整理的这篇文章主要介绍了javascript – 使用d3.js的SVG到画布前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在创建d3.js可视化时,有没有人试过使用svg到canvas库?我试图使用canvg.js和d3.js从一个 android 2.3应用程序webview中将svg转换为canvas,但是当我调用
svg.selectAll(".axis")
      .data(d3.range(angle.domain()[1]))
    .enter().append("g")
      .attr("class","axis")
      .attr("transform",function(d) { return "rotate(" + angle(d) * 180 / Math.PI + ")"; })
    .call(d3.svg.axis()
      .scale(radius.copy().range([-5,-outerRadius]))
      .ticks(5)
      .orient("left"))
    .append("text")
      .attr("y",function (d) {
          if (window.innerWidth < 455){
            console.log("innerWidth less than 455: ",window.innerWidth);
            return -(window.innerHeight * .33);
          }
          else{
            console.log("innerWidth greater than 455: ",window.innerWidth);
            return -(window.innerHeight * .33);
          }
        })
      .attr("dy",".71em")
      .attr("text-anchor","middle")
      .text(function(d,i) { return capitalMeta[i]; })
      .attr("style","font-size:12px;");

我收到错误:未捕获TypeError:无法调用null http://mbostock.github.com/d3/d3.js?2.5.0:1707方法’setProperty’

会有某种无头浏览器应用程序,还是服务器端的js解析器工作?以前有人遇到过吗?

解决方法

这里有一种方式可以将svg写入画布(然后将结果保存为png或其他内容):
// Create an export button
d3.select("body")
    .append("button")
    .html("Export")
    .on("click",svgToCanvas);

var w = 100,// or whatever your svg width is
    h = 100;

// Create the export function - this will just export 
// the first svg element it finds
function svgToCanvas(){
    // Select the first svg element
    var svg = d3.select("svg")[0][0],img = new Image(),serializer = new XMLSerializer(),svgStr = serializer.serializeToString(svg);

    img.src = 'data:image/svg+xml;base64,'+window.btoa(svgStr);

    // You could also use the actual string without base64 encoding it:
    //img.src = "data:image/svg+xml;utf8," + svgStr;

    var canvas = document.createElement("canvas");
    document.body.appendChild(canvas);

    canvas.width = w;
    canvas.height = h;
    canvas.getContext("2d").drawImage(img,w,h);
    // Now save as png or whatever
};
原文链接:https://www.f2er.com/js/152508.html

猜你在找的JavaScript相关文章