我正在寻找使用d3js v3在HTML中使用SVG创建非圆弧。我的问题是,我能够创建的非圆弧实际上是圆弧变换。结果,弧的行程宽度不均匀并且看起来很笨拙。这是一个jsFiddle example:
CREATE OR REPLACE FUNCTION Replace_Value
(
input_ID IN VARCHAR2
) RETURN VARCHAR2
AS
v_ID varchar(2);
BEGIN
begin
SELECT distinct a.ID into v_id from Table 2 a where a.ID in (select 'A'||b.id from table1 b where b.id=input_ID);
exception
when others then
dbms_output.put_line(sqlcode);
end;
RETURN v_id;
END Replace_Value;
有没有人知道创建非圆形SVG弧的方法(意味着半径变化)?
答案 0 :(得分:1)
您可以创建一个简单的折线图并使用d3.curveBasis
或您喜欢的任何其他插值。使用数据来获得所需的结果。
这是片段:
var margin = {
top: 30,
right: 20,
bottom: 30,
left: 50
};
var width = 550 - margin.left - margin.right;
var height = 150 - margin.top - margin.bottom;
var x = d3.scaleLinear().range([0, width]);
var y = d3.scaleLinear().range([height, 0]);
var valueline = d3.line()
.x(function(d) {
return x(d.x);
})
.y(function(d) {
return y(d.y);
}).curve(d3.curveBasis);
var svg = d3.select("body")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var data = [{
x: 1,
y: "0"
}, {
x: 1.05,
y: "0.6"
}, {
x: 3,
y: "1.3"
}, {
x: 4.95,
y: "0.6"
}, {
x: 5,
y: "0"
}];
data.forEach(function(d) {
d.x = d.x
d.y = +d.y;
});
x.domain(d3.extent(data, function(d) {
return d.x;
}));
y.domain([0, d3.max(data, function(d) {
return d.y;
})]);
svg.append("path")
.attr("d", valueline(data));
path {
stroke: black;
stroke-width: 8;
fill: none;
stroke-linecap: round;
shape-rendering: geometricprecision;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.min.js"></script>