gpt4 book ai didi

javascript - "Interpolate"不是一个函数

转载 作者:行者123 更新时间:2023-12-03 03:42:59 25 4
gpt4 key购买 nike

我是 D3 新手,正在尝试一些图表。在使用 D3 V4 构建折线图时,我遇到了以下错误。

d3.line(...).x(...).y(...).interpolate is not a function

我认为此错误是由于函数 interpolate 在 D3 v4 中不可用。如果有人可以帮助我使用插值函数的替换函数,那就太好了。

我的代码在下面的链接

https://ghostbin.com/paste/ztans

最佳答案

在 D3 v4.x 中,行生成器采用 curve定义插值:

While lines are defined as a sequence of two-dimensional [x, y] points, and areas are similarly defined by a topline and a baseline, there remains the task of transforming this discrete representation into a continuous shape: i.e., how to interpolate between the points. A variety of curves are provided for this purpose [...] Curves are typically not constructed or used directly, instead being passed to line.curve and area.curve. (emphases mine)

所以,这个:

var lineFun = d3.line()
.x(function(d){return d.month*50})
.y(function(d){return height - (10* d.Sales)})
.interpolate("basis")

应该是:

var lineFun = d3.line()
.x(function(d){return d.month*50})
.y(function(d){return height - (10* d.Sales)})
.curve(d3.curveBasis);

这是经过更改的代码:

var w = 700;
var height = 300;
var padding = 2;
var border = 2

var dataset=[5,7,2,6,1,10,8,9,11,13,16,40,15,20,25,35,36,25,28,18,17,4,22,5,3,35,46,57];

var monthlySales =[
{
"month":1,
"Sales":10
},
{
"month":2,
"Sales":25
},
{
"month":3,
"Sales":12
},
{
"month":4,
"Sales":16
},
{
"month":5,
"Sales":17
}
];

onload();

function onload(){

var svg = d3.select("body")
.append("svg")
.attr("width",w)
.attr("height",height)

svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attrs({
x : function(d,i){
return (i * (w/dataset.length)); },
y : function(d){ return (height- (d*4))},
width: (w/dataset.length)-padding,
height:function(d){ return(d*4); },
fill : function(d){return "rgb(0,"+(d*10)+",0)" ;}
});

svg.selectAll("text")
.data(dataset)
.enter()
.append("text")
.text(function(d){ return d})
.attrs({

x: function(d,i){ return (i * (w/dataset.length)) + ((((w/dataset.length) - padding)/2))},
y: function(d) {return (height-(d*4))},
"text-anchor" : "middle"
})


var lineFun = d3.line()
.x(function(d){return d.month*50})
.y(function(d){return height - (10* d.Sales)})
.curve(d3.curveBasis);


var svgLine = d3.select("body").append("svg")
.attr("width",w)
.attr("height",height);

var svgPath = svgLine.append("path")
.attrs({
d: lineFun(monthlySales),
"stroke": "purple",
"stroke-width":2,
"fill" :"none"
})

svgLine.selectAll("text")
.data(monthlySales)
.enter()
.append("text")
.text(function(d){return d.Sales})
.attrs({
x : function(d){return d.month*50 - 10},
y : function(d){return height-(10*d.Sales) + 10},
"font-size":"12px",
"fill" : "#666666",
"font-family":"sans-serif",
"dx":".35em",
"text-anchor":"start",
"font-weight": function(d,i){
if(i==0 || i == monthlySales.length-1){
return "bold"
}
else{
return "normal"
}
}
})



}
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/d3-selection-multi.v1.min.js"></script>

关于javascript - "Interpolate"不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40198378/

25 4 0
文章推荐: javascript - 为什么全局定义的变量是未定义的?
文章推荐: firebase - 使用Dart迭代DataSnapshot
文章推荐: dart - 角 2 Dart : How to bind events correctly to dynamically generated HTML (Removing disallowed attribute
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com