这是一个使用 d3 的小提琴示例
http://jsfiddle.net/5yhgyyq9/4/
您只需要使用percentage 变量即可让它向您显示适当的数量。您也可以调整它以使用标准 SVG。
var radius = 100,
padding = 10,
radians = 2 * Math.PI;
var dimension = (2 * radius) + (2 * padding),
points = 50, percentage = .77;
var angle = d3.scale.linear()
.domain([0, points-1])
.range([0, radians]);
var line = d3.svg.line.radial()
.interpolate("basis")
.tension(0)
.radius(radius)
.angle(function(d, i) {
if (i < (points*percentage + 1)) {
return angle(i);
}
});
var svg = d3.select("body").append("svg")
.attr("width", dimension)
.attr("height", dimension)
.append("g");
svg.append("path").datum(d3.range(points))
.attr("class", "line")
.attr("d", line)
.attr("transform", "translate(" + (radius + padding) + ", " + (radius + padding) + ")");
通过向 SVG 添加渐变元素
<svg>
<linearGradient id="mygradient" x1="0" y1="1" x2="6.123233995736766e-17" y2="0" gradientTransform="matrix(1,0,0,1,0,0)">
<stop offset="0%" stop-color="#006d00"></stop>
<stop offset="10%" stop-color="#00ff00"></stop>
<stop offset="20%" stop-color="#006d00"></stop>
<stop offset="30%" stop-color="#00ff00"></stop>
<stop offset="40%" stop-color="#006d00"></stop>
<stop offset="50%" stop-color="#00ff00"></stop>
<stop offset="60%" stop-color="#006d00"></stop>
<stop offset="70%" stop-color="#00ff00"></stop>
<stop offset="80%" stop-color="#006d00"></stop>
<stop offset="90%" stop-color="#00ff00"></stop>
<stop offset="100%" stop-color="#006d00"></stop>
</linearGradient>
</svg>
还有一个样式,就可以得到渐变描边
.line {
fill: none;
stroke: url('#mygradient');
stroke-width: 4px;
stroke-linecap:round;
}
我将把它作为练习留给你,让你弄清楚什么渐变适合你