d3 - 模拟 x 轴的标签
d3 - mock the labelling of the x axis
我有一个图表,其中 x 轴代表日历周。由于年份的变化,我的图表现在排序不正确。所以 2015 年的日历周 1 现在在 2014 年的日历周之前。
我知道我必须更改数据中的某些内容。我想在日历周之前添加年份,例如 151、152、1450、1451、1452 等等。
我试过了,很管用。但是对于客户来说,它并不是真正可读的。所以我想我可以再次将日历周数解析为 1、2、50、51 和 52,并将其发送到 xAxis 变量。
var xAxis = d3.svg.axis()
.scale(x)
.tickValues(sliceKeys)
.orient("bottom");
但是碰巧价格变动与条形图不匹配并且没有出现。但酒吧现在正确排序。有人知道如何做到这一点吗?
根据 Lars 在上面评论中的建议,您可以使用 .tickFormat()
将带年份的值转换为不带年份的值。
Here's a modified fiddle。我禁用了您对键的切片(但是通过仅注释掉切片部分而不删除整个循环以懒惰的方式做到了,即使它不再需要)。
然后,唯一需要的是 .tickFormat()
从完整值中删除年份的位:
var xAxis = d3.svg.axis()
.scale(x)
.tickValues(sliceKeys)
.tickFormat(function(yearAndWeek) {
return String(yearAndWeek).slice(2);
})
.orient("bottom");
我有一个图表,其中 x 轴代表日历周。由于年份的变化,我的图表现在排序不正确。所以 2015 年的日历周 1 现在在 2014 年的日历周之前。
我知道我必须更改数据中的某些内容。我想在日历周之前添加年份,例如 151、152、1450、1451、1452 等等。
我试过了,很管用。但是对于客户来说,它并不是真正可读的。所以我想我可以再次将日历周数解析为 1、2、50、51 和 52,并将其发送到 xAxis 变量。
var xAxis = d3.svg.axis()
.scale(x)
.tickValues(sliceKeys)
.orient("bottom");
但是碰巧价格变动与条形图不匹配并且没有出现。但酒吧现在正确排序。有人知道如何做到这一点吗?
根据 Lars 在上面评论中的建议,您可以使用 .tickFormat()
将带年份的值转换为不带年份的值。
Here's a modified fiddle。我禁用了您对键的切片(但是通过仅注释掉切片部分而不删除整个循环以懒惰的方式做到了,即使它不再需要)。
然后,唯一需要的是 .tickFormat()
从完整值中删除年份的位:
var xAxis = d3.svg.axis()
.scale(x)
.tickValues(sliceKeys)
.tickFormat(function(yearAndWeek) {
return String(yearAndWeek).slice(2);
})
.orient("bottom");