【发布时间】:2016-12-19 13:40:01
【问题描述】:
我正在制作一个图表,使用 d3 lib 构建。
图表非常简单,y 轴为欧元,x 轴为货币,这样我就可以显示银行账户随时间的演变。
我想为月份标签添加一些样式,具体取决于该月帐户上可用的相应金额,然后绘制 x 轴我有这样的东西:
(d3Data 包含绘制图形所需的所有数据)
d3Data.xScale = d3.scale.ordinal().domain(
d3Data.dateStates.map(function(dateState) {
return dateState.xValue
})
);
xAxis = d3.svg.axis().scale(d3Data.xScale).orient("bottom")
d3Data.chart.append("g").call(xAxis)
这有效地创建了轴,但现在,我想为每个刻度添加一些样式类,如“零”、“最大”或其他。
我的第一种方法是选择所有刻度并执行以下操作:
d3Data.chart.selectAll(".xAxisItemClass")
.attr('class', function(data, index) {
if (d3Data.months[index].value === 0)
return 'zero'
});
但是 d3Data 在作为第二个参数传递给attr() 调用的匿名函数中不存在。我是 d3 的菜鸟,所以我可能遗漏了一些东西,因为如此简单,这应该很容易
为什么我无法访问里面的 D3data?我该怎么做?
提前致谢:)
【问题讨论】:
-
如果带括号:
if (condition) -
对不起,只是一个错误...我使用咖啡语法并忘记在 if 语句上添加括号,这根本不是我的问题
-
怎么办
if(data === 0)(不费吹灰之力很难帮你) -
"但是匿名函数中不存在 d3Data 作为第二个参数传递给 attr 调用。"你得到什么错误?我不明白为什么
d3Data应该可以在该函数之外访问,但不能在该函数内部访问。 -
Dogbert 是对的:
d3Data.months是什么?
标签: javascript d3.js