D3.Js-将数据集从C#传递到javascript不起作用

D3.Js-将数据集从C#传递到javascript不起作用,javascript,c#,d3.js,Javascript,C#,D3.js,这个问题与我不久前发布的以下问题有关 我接受了一个答案,并在此基础上做了一些修改 var data = $('#<%=hdnDtArray.ClientID%>').val(); var svg = d3.select("svg"), margin = { top: 20, right: 20, bottom: 30, left: 50 }, width = +svg.attr("width") - margin.left - margin.

这个问题与我不久前发布的以下问题有关

我接受了一个答案,并在此基础上做了一些修改

    var data = $('#<%=hdnDtArray.ClientID%>').val();
    var svg = d3.select("svg"),
      margin = { top: 20, right: 20, bottom: 30, left: 50 },
      width = +svg.attr("width") - margin.left - margin.right,
      height = +svg.attr("height") - margin.top - margin.bottom,
      g = svg.append("g").attr("transform", "translate(" + margin.left + "," 
      + margin.top + ")");

   var parseTime = d3.timeParse("%d-%b-%y");

  var x = d3.scaleTime()
      .rangeRound([0, width]);

  var y = d3.scaleLinear()
      .rangeRound([height, 0]);

  var line = d3.line()
      .x(function (d) { return x(parseTime(d.date)); })
      .y(function (d) { return y(d.close); });



  x.domain(d3.extent(data, function (d) { return parseTime(d.date); }));
  y.domain(d3.extent(data, function (d) { return d.close; }));

  g.append("g")
      .attr("transform", "translate(0," + height + ")")
      .call(d3.axisBottom(x))
    .select(".domain")
      .remove();

  g.append("g")
      .call(d3.axisLeft(y))
    .append("text")
      .attr("fill", "#000")
      .attr("transform", "rotate(-90)")
      .attr("y", 6)
      .attr("dy", "0.71em")
      .attr("text-anchor", "end")
      .text("Price ($)");

  g.append("path")
      .datum(data)
      .attr("fill", "none")
      .attr("stroke", "steelblue")
      .attr("stroke-linejoin", "round")
      .attr("stroke-linecap", "round")
      .attr("stroke-width", 1.5)
      .attr("d", line);
图形未显示,存在此错误

Error: <path> attribute d: Expected number, "MNaN,NaNLNaN,NaNL…".
错误:属性d:预期数字,“MNaN、NaNLNaN、NaNL…”。
同时,我希望Y轴有年,月,这取决于上下文。比如一月、二月、三月等。 否则,201520162017等。 否则2015-12-012015-12-022015-12-03等。 我应该能够通过另一个数组传递这些数据


有人能帮忙吗?我是D3.js的新手,这里的问题是你的说明符。因为你的约会对象是

"2016.07.19"
。。。您的说明符应该是:

var parseTime = d3.timeParse("%Y.%m.%d");
有关说明符字符串的值列表,请查看

以下是仅包含该更改的代码:

var数据=[{
“日期”:“2016.07.19”,
“结束”:185697.89
}, {
“日期”:“2016.07.20”,
“结束”:185697.89
}, {
“日期”:“2016.07.21”,
“关闭”:186601.1
}, {
“日期”:“2016.07.22”,
“结束”:187273.89
}, {
“日期”:“2016.07.25”,
“结束”:186807.74
}, {
“日期”:“2016.07.26”,
“结束”:186893.26
}]
var svg=d3。选择(“svg”),
保证金={
前20名,
右:20,,
底数:30,
左:50
},
宽度=+svg.attr(“宽度”)-margin.left-margin.right,
高度=+svg.attr(“高度”)-margin.top-margin.bottom,
g=svg.append(“g”).attr(“transform”、“translate”(+margin.left+)、“+margin.top+”);
var parseTime=d3.timeParse(“%Y.%m.%d”);
var x=d3.scaleTime()
.rangeRound([0,宽度]);
变量y=d3.scaleLinear()
.rangeRound([高度,0]);
var line=d3.line()
.x(功能(d){
返回x(解析时间(d.date));
})
.y(功能(d){
返回y(d.close);
});
x、 域(d3)。范围(数据,函数(d){
返回时间(d.日期);
}));
y、 域(d3)。范围(数据,函数(d){
返回d.close;
}));
g、 附加(“g”)
.attr(“变换”、“平移(0)”、“高度+”)
.call(d3.axisBottom(x))
.select(“.domain”)
.remove();
g、 附加(“g”)
.呼叫(d3.左(y))
.append(“文本”)
.attr(“填充”、“千”)
.attr(“变换”、“旋转(-90)”)
.attr(“y”,6)
.attr(“dy”,“0.71em”)
.attr(“文本锚定”、“结束”)
.text(“价格($)”);
g、 附加(“路径”)
.基准(数据)
.attr(“填充”、“无”)
.attr(“笔划”、“钢蓝”)
.attr(“笔划线条连接”、“圆形”)
.attr(“笔划线头”、“圆形”)
.attr(“笔划宽度”,1.5)
.attr(“d”,行)

这里的问题是您的说明符。因为你的约会对象是

"2016.07.19"
。。。您的说明符应该是:

var parseTime = d3.timeParse("%Y.%m.%d");
有关说明符字符串的值列表,请查看

以下是仅包含该更改的代码:

var数据=[{
“日期”:“2016.07.19”,
“结束”:185697.89
}, {
“日期”:“2016.07.20”,
“结束”:185697.89
}, {
“日期”:“2016.07.21”,
“关闭”:186601.1
}, {
“日期”:“2016.07.22”,
“结束”:187273.89
}, {
“日期”:“2016.07.25”,
“结束”:186807.74
}, {
“日期”:“2016.07.26”,
“结束”:186893.26
}]
var svg=d3。选择(“svg”),
保证金={
前20名,
右:20,,
底数:30,
左:50
},
宽度=+svg.attr(“宽度”)-margin.left-margin.right,
高度=+svg.attr(“高度”)-margin.top-margin.bottom,
g=svg.append(“g”).attr(“transform”、“translate”(+margin.left+)、“+margin.top+”);
var parseTime=d3.timeParse(“%Y.%m.%d”);
var x=d3.scaleTime()
.rangeRound([0,宽度]);
变量y=d3.scaleLinear()
.rangeRound([高度,0]);
var line=d3.line()
.x(功能(d){
返回x(解析时间(d.date));
})
.y(功能(d){
返回y(d.close);
});
x、 域(d3)。范围(数据,函数(d){
返回时间(d.日期);
}));
y、 域(d3)。范围(数据,函数(d){
返回d.close;
}));
g、 附加(“g”)
.attr(“变换”、“平移(0)”、“高度+”)
.call(d3.axisBottom(x))
.select(“.domain”)
.remove();
g、 附加(“g”)
.呼叫(d3.左(y))
.append(“文本”)
.attr(“填充”、“千”)
.attr(“变换”、“旋转(-90)”)
.attr(“y”,6)
.attr(“dy”,“0.71em”)
.attr(“文本锚定”、“结束”)
.text(“价格($)”);
g、 附加(“路径”)
.基准(数据)
.attr(“填充”、“无”)
.attr(“笔划”、“钢蓝”)
.attr(“笔划线条连接”、“圆形”)
.attr(“笔划线头”、“圆形”)
.attr(“笔划宽度”,1.5)
.attr(“d”,行)


非常感谢!我使用您提供的虚拟数据执行代码,然后将数据传递给javascript代码(通过调试获得),然后它就可以工作了。但是当我像这样使用它时,var data=$('#').val();如果尝试从C#传递数据,它将不起作用。它会产生相同的错误。顺便说一句,您能指出您在X axys中使用了几个月的代码段吗?说明符是我在您的代码中更改的唯一内容。关于C#问题,我建议你发布另一个问题,缩小范围。这里的问题是说明符,它已修复。每个问题不要问超过一个问题:保留一个问题,一个问题。非常感谢!我使用您提供的虚拟数据执行代码,然后将数据传递给javascript代码(通过调试获得),然后它就可以工作了。但是当我像这样使用它时,var data=$('#').val();如果尝试从C#传递数据,它将不起作用。它会产生相同的错误。顺便说一句,您能指出您在X axys中使用了几个月的代码段吗?说明符是我在您的代码中更改的唯一内容。关于C#问题,我建议你发布另一个问题,缩小范围。这里的问题是说明符,它已修复。每个问题不要问超过一个问题:一个问题,一个问题。