Parsing 无法在d3中绘制线,分析错误

Parsing 无法在d3中绘制线,分析错误,parsing,d3.js,Parsing,D3.js,我有JSFIDLE上的代码 我能够画出轴和网格线,但当涉及到实际的线时,我遇到了解析问题。不知道为什么。我可能遗漏了一些明显的东西。这是我得到的错误 Error: Problem parsing d="MNaN,1LNaN,8LNaN,2LNaN,10LNaN,3LNaN,20LNaN,90" 这是 有几件事是错的: 对于你得到的直线的x坐标 formatter(parser.parse(d.date)) 首先,在解析后的日期上调用格式化程序,会生成一个字符串,而这不是绘制值所需的字符串。

我有JSFIDLE上的代码

我能够画出轴和网格线,但当涉及到实际的线时,我遇到了解析问题。不知道为什么。我可能遗漏了一些明显的东西。这是我得到的错误

Error: Problem parsing d="MNaN,1LNaN,8LNaN,2LNaN,10LNaN,3LNaN,20LNaN,90"
这是

有几件事是错的:

对于你得到的直线的x坐标

formatter(parser.parse(d.date))
首先,在解析后的日期上调用
格式化程序
,会生成一个字符串,而这不是绘制值所需的字符串。您需要日期的定量值,所以只需
parser.parse(d.date)

接下来,您需要将每个日期转换为沿x轴的x位置。您已经创建了一个x刻度(分配给代码中的var
x
),用于绘制轴,您需要使用该刻度将日期转换为所述x位置:

return x(parser.parse(d.date))
return y(d.total)
这固定了x的位置。然后,您需要执行类似的操作,将y值转换为y位置:

return x(parser.parse(d.date))
return y(d.total)

谢谢你的回复和编辑!!你太棒了!我有一个关于滴答声的问题。请注意,我有刻度(4),但它显示的不是4个刻度,而是5个,如果我将数字降低到刻度(3),它只显示2个刻度。知道为什么吗?传递到
ticks()
的数字是。在这里画四个记号意味着每22.5个单位(90除以4)有一个记号,这不是“人类可读的”。理想情况下,d3将取整到100,每25个单位有一个刻度。显然,选择不做这件事,可能是因为它不认为25是人类可读的。如果您的数据是静态的,另一种选择是使用
tickValues()
,显式指定记号应该放在哪里。还有一个后续问题,抱歉~但它似乎在safari中给出了解析错误,但不知道原因是什么。