我正在使用D3在Angular中创建堆叠的条形图
我现在还需要在同一张图表上绘制折线图。
我认为最好的方法是使用双轴。
我有第二个轴在工作,但是无法使线工作。
任何人都可以指出我的工作方向
答案 0 :(得分:1)
line
函数(在您的情况下为 valueline )似乎定义不正确,因为它缺少访问器函数。这是docs的意思。
我无法分叉您的代码,但是您可以尝试以下代码段(包含drawLine方法):
private drawLine(linedata:any){
var that = this;
var valueline = d3.line().x(function(d, i) {
return that.x1(d.date);
// return that.x0(d.date) + 0.5 * that.x0.bandwidth();
}).y(function(d) {
return that.y1(d.value);
});
this.x1.domain(this.data.map((d:any)=>{
return d.date
}));
this.y1.domain(d3.extent(linedata, function(d) {
return d.value
}));
this.lineArea.append("path")
.data([linedata])
.attr("class", "line").style('stroke-width', 2)
.attr("d", valueline);
}
它有效,我还为x
属性添加了一条注释行,该行与您抵消小节的方式匹配。另一个建议是使用相同的x0
标度,因为新定义的x1
与x0
具有相同的域。希望这会有所帮助。