javascript - 用渐变颜色绘制一个 D3 圆

标签 javascript d3.js svg gradient geometry

如何画一个渐变色的圆?比如,从黄色到蓝色的渐变。

通常,要创建一个黄色的圆圈,我们可以使用以下代码:

var cdata=[50,40];
var xscale=40;
var xspace =50;
var yscale=70;

var svg = d3.select("body")
    .append("svg")
    .attr("width", 1600)
    .attr("height", 1600);

var circle = svg.selectAll("circle")
    .data(cdata)
   .enter()
    .append("circle");

var circleattr = circle
    .attr("cx", function(d) {
        xscale = xscale+xspace;
        return xscale;
    })
    .attr("cy", function(d) {
        yscale=yscale+xspace+10;
        return yscale;
    })
    .attr("r", function(d) {
        return d;
    })
    .style("fill","yellow");

最佳答案

您必须先在 SVG 中定义渐变,然后用指向渐变元素的 SVG 链接填充圆圈。

// Define the gradient
var gradient = svg.append("svg:defs")
    .append("svg:linearGradient")
    .attr("id", "gradient")
    .attr("x1", "0%")
    .attr("y1", "0%")
    .attr("x2", "100%")
    .attr("y2", "100%")
    .attr("spreadMethod", "pad");

// Define the gradient colors
gradient.append("svg:stop")
    .attr("offset", "0%")
    .attr("stop-color", "#a00000")
    .attr("stop-opacity", 1);

gradient.append("svg:stop")
    .attr("offset", "100%")
    .attr("stop-color", "#aaaa00")
    .attr("stop-opacity", 1);

// Fill the circle with the gradient
var circle = svg.append('circle')
    .attr('cx', width / 2)
    .attr('cy', height / 2)
    .attr('r', height / 3)
    .attr('fill', 'url(#gradient)');

A jsFiddle与完整的例子。关于如何在 MDN Tutorial 中定义 SVG 渐变的更多详细信息.结果图像:

Circle with gradient, created in D3

关于javascript - 用渐变颜色绘制一个 D3 圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20837147/

相关文章:

javascript - Highcharts Gauge 图表正在向下舍入最大数字

javascript - 传递动态参数如何与 React-Router 中的传递 props 一起工作

javascript - 重新初始化/重新启动 Google map Api

javascript - 如何获取 Fabric JS 中形状的坐标?

javascript - 从js文件中 trim 空格在python中不起作用

d3.js - D3js-Topojson : how to move from pixelized to Bézier curves?

javascript - d3.tsv 查找最大值

javascript - 将堆叠条形图从 D3.js 版本 3 转换为版本 4 时出现的问题

javascript - 如何在页面上的网页元素之间绘制连接线

google-app-engine - Google App Engine 正在发送 MIME 类型错误的 SVG