D3.js d3js折线图——如何将最后一步扩展到范围的末尾?
这很简单,但我解决不了这个问题 一条线是两个点(值)之间的链接,从值A到值B绘制。因此,假设A的值为10,B的值为20,C的值缺失。现在,该线从0到10到20绘制并完成。我想画一条从0到10到20到25的线。该值与x轴的比例(0、10、20、30、40)相同。这是否可能在不改变直线起点的情况下,使其仍然从x轴的零点开始 当然,不需要从20到25再画一条线:) 我行的代码是:D3.js d3js折线图——如何将最后一步扩展到范围的末尾?,d3.js,linechart,D3.js,Linechart,这很简单,但我解决不了这个问题 一条线是两个点(值)之间的链接,从值A到值B绘制。因此,假设A的值为10,B的值为20,C的值缺失。现在,该线从0到10到20绘制并完成。我想画一条从0到10到20到25的线。该值与x轴的比例(0、10、20、30、40)相同。这是否可能在不改变直线起点的情况下,使其仍然从x轴的零点开始 当然,不需要从20到25再画一条线:) 我行的代码是: var line = d3.svg.line() .defined(function (d) { ret
var line = d3.svg.line()
.defined(function (d) { return d.value != null; })
.x(function (d, i) {
return x(d.xValue);
})
.y(function (d) {
return y(d.value);
}).interpolate("step-after");
提前thx
这里有两张照片。第一个,它现在看起来怎么样,第二个,它应该看起来怎么样
(来源:)
(来源:)
©a-x-i(d3js让我疯狂,但它很酷……)d3永远不会将线延伸到最终数据点之外。但是,线条的外观以及数据点的连接方式取决于
d3.svg.line
的设置
举个简单的例子,假设你只有两个点(10,20)和(15,30)
法线(“线性”)插值器将在它们之间绘制一条直线
“插值器之后的”步从第一个点(10,20)开始,画一条水平线到第二个点的x值(即到(15,20)),然后画一条垂直线到(15,30)。结果:第一个值显示为一条水平线,在应用第二个值之前保持不变
相反,插值器之前的步从第一个点(10,20)开始,绘制一条垂直线,直到第二个点的y值(即到(10,30)),然后绘制水平线到(15,30)。结果:第一个值仅显示为垂直步长的起点,第二个值显示为在这两个值之间保持不变
最后,“步长”插值器在两个x值之间改变y值的一半。结果是,起始值和结束值都显示为水平线,长度为它们之间距离的一半
下面是不同直线插补器选项的比较:我认为如果你:
- 使用“步长”插值函数
- 将直线的x值设置为水平条的中间李>
var line = d3.svg.line()
.defined(function (d) { return d.value != null; })
.x(function (d, i) {
return x(d.xValue);
})
.y(function (d) {
return y(d.value);
}).interpolate("step-after");
到
这将产生一条线,该线从第一个条的中点开始,到最后一个条的中点结束,但用水平线清楚地显示每个条的值
如果您的产品线的起点和终点必须在您的产品线的最末端,那么您有两个选择:
- 创建一个;或者
- 将数据数组传递到
时,添加一个“结束值”数据点d3.svg.line
var line = d3.svg.line()
.defined(function (d) { return d.value != null; })
.x(function (d, i) {
return x(d.xValue) + x.rangeBand()/2;
})
.y(function (d) {
return y(d.value);
}).interpolate("step");