D3.js TypeError:n不是函数

D3.js TypeError:n不是函数,d3.js,D3.js,这是由某种函数问题引起的,我在某个地方重写了一个事件参数,对吗?还是外来的分号 页面上似乎加载了所有内容(例如CSS样式),但我发现了这个错误。你能指出我的问题在哪里吗 p、 我只是为了方便使用而在这里使用小提琴。我正在托管自己的HTTP服务器,以便正确地知道CSV加载 在y域中,您不需要(sales,sales.map)…只需要(sales.map。就像这样: y.domain([0, d3.max(sales.map(function(sale){ return sale['Total P

这是由某种函数问题引起的,我在某个地方重写了一个事件参数,对吗?还是外来的分号

页面上似乎加载了所有内容(例如CSS样式),但我发现了这个错误。你能指出我的问题在哪里吗

p、 我只是为了方便使用而在这里使用小提琴。我正在托管自己的HTTP服务器,以便正确地知道CSV加载


在y域中,您不需要
(sales,sales.map
)…只需要
(sales.map
。就像这样:

y.domain([0, d3.max(sales.map(function(sale){ return sale['Total Paid']; }))]);
错误发生在绘制任何东西之前,这有助于确定错误在刻度中,因为一切都取决于刻度

除了第一条错误信息, 选择附加条形图时也出现错误。您希望
.data(sales)
而不是
.sales(sales)

此外,d3.linearScale没有rangeBand方法,您必须使用scaleBand,例如:

   var x = d3.scaleBand()
        .domain(sales.map(function(sale){ return sale.bookingID; }))
        .range([0, width])
        .paddingInner([0.1])
这种比例选择在任何情况下都更好,因为订单不是线性维度,而是带有离散元素的维度

总的来说,它应该给你一些类似的东西:

   var x = d3.scaleBand()
        .domain(sales.map(function(sale){ return sale.bookingID; }))
        .range([0, width])
        .paddingInner([0.1])
var margin={top:20,right:20,bottom:70,left:40},
宽度=600-边距。左侧-边距。右侧,
高度=300-margin.top-margin.bottom;
var销售额=[
{bookingID:100,“支付总额”:100},
{bookingID:101,“支付总额”:90},
{bookingID:102,“支付总额”:100},
{bookingID:103,“支付总额”:80},
{bookingID:104,“支付总额”:150},
{bookingID:105,“支付总额”:100},
{bookingID:106,“支付总额”:160},
{bookingID:107,“支付总额”:100}
];
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度+边距。左侧+边距。右侧)
.attr(“高度”,高度+边距。顶部+边距。底部)
.附加(“g”)
.attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
变量y=d3.scaleLinear()
.范围([高度,0])
.domain([0,d3.max(sales.map(函数(sale){return sale['Total Paid'];})));
var yAxis=d3.axisLeft()
.比例(y)
.蜱(10);
var x=d3.scaleBand()
.domain(sales.map(函数(sale){return sale.bookingID;}))
.范围([0,宽度])
.填充器([0.1]);
var xAxis=d3.axisBottom()
.比例(x)
.蜱(10);
svg.append(“g”)
.attr(“类”、“x轴”)
.attr(“变换”、“平移(0)”、“高度+”)
.呼叫(xAxis)
.selectAll(“文本”)
.style(“文本锚定”、“结束”)
.attr(“dx”,“-.8em”)
.attr(“dy”,“-.55em”)
.attr(“变换”、“旋转(-90)”);
svg.append(“g”)
.attr(“类”、“y轴”)
.呼叫(yAxis)
.append(“文本”)
.attr(“变换”、“旋转(-90)”)
.attr(“y”,6)
.attr(“dy”,“.71em”)
.style(“文本锚定”、“结束”)
.文本(“$USD”);
svg.selectAll(“条”)
.数据(销售)
.enter().append(“rect”)
.样式(“填充”、“钢蓝”)
.attr(“x”,函数(sale){return x(sale.bookingID);})
.attr(“宽度”,x.带宽())
.attr(“y”,函数(销售){返回y(销售[“已支付总额]);})
.attr(“高度”,函数(销售){return height-y(销售[“支付总额]);});
//});

使用D3JavaScript创建条形图

你不需要
d3.max(sales.map(function(sale){return sale['Total Paid'];}))
,它可以是
d3.max(sales,function(sale){return sale['Total Paid'];})
。啊,是的,打得好,我今天跑得有点慢,我想——这周旅行太多了。