更新:以下是此问题的一个示例 - http://jsfiddle.net/Hffks/2/
我正在尝试使用D3来编码折线图,并且我的线在末尾被关闭,我的意思是它充当了第一个和最后一个点相同的闭合路径。我的数据采用以下JSON格式:
[ entityA : [ { time : 1230000, // time since epoch
attribute1 : 123 // numeric value
attribute2 : 123 // numeric value
},
{ time : 1230010, // time since epoch
attribute1 : 123 // numeric value
attribute2 : 123 // numeric value
} ],
entityB : [ { ... // same format as above
...
]
我正在使用一行的标准声明(带有x和y函数的d3.svg.line):
var line = d3.svg.line()
.x(function(d) {
return x_scale(d.c_date));
})
.y(function(d) {
return y_scale(d.total);
});
然后在for循环中迭代实体,我附加了一个“svg:path”:
canvas.append("svg:path")
.attr("d", line(data[entity]))
关于图形的其他所有工作:点被正确放置,每个实体有多个独立的线,绘制轴等。但是,每条独立线都充当封闭路径。
提前感谢您的帮助!
答案 0 :(得分:17)
默认情况下填充路径。如果您将fill
设置为“无”并将stroke
设置为“黑色”,您会看到路径未关闭,它似乎就是。
答案 1 :(得分:0)
我的代码是这样的:
var width = 400;
var height = 400;
var svg = d3.select('body')
.append('svg')
.attr('width', width)
.attr('height', height);
//The data for our line
var lineData = [{
"x": 1,
"y": 5
},
{
"x": 20,
"y": 20
},
{
"x": 40,
"y": 10
},
{
"x": 60,
"y": 40
},
{
"x": 80,
"y": 5
},
{
"x": 100,
"y": 60
}
];
//The line SVG Path we draw
var lineGraph = svg.append("path")
.attr("d", d3.line()
.x(d => d.x)
.y(d => d.y)
.curve(d3.curveLinear)(lineData))
//.curve(d3.curveBasis)(lineData)) //Draws smooth joints- yumuşak birleşim noktası(mafsal) çizer
.attr("stroke", "blue")
.attr("stroke-width", 2)
.attr("fill", "none");
您可以在此处查看d3版本5.9.2:https://jsfiddle.net/jsfiddleCem/u31omp5z/8/