尝试更改AxisLabel时,我无法获取正确的日期对象:
dateAxis.renderer.labels.template.adapter.add("text", function(text, target) {
var date = target.dataItem.date, //Date Object "2020/01/01"
labelText = text; // "Jul" for July
return text;
});
[target.dataItem.date给我一个日期对象,仅初始化了年,每次都将月份设置为一月,而text参数给我七月。为什么日期对象不正确?
**** EDIT ****
这里是我的问题的代码笔,实际上是在图表宽度过窄时发生的,因此dateAxis仅显示年份:https://codepen.io/XxSven/pen/rNadEPG
这是有关“轴网格粒度”的。让我解释一下。
您的数据跨越数年。这意味着轴需要显示几年的刻度。为了使其不被网格线和标签太挤满,它直观地修改了网格/标签的粒度。
在您的情况下,它将进入“年份”模式,这意味着它将显示每年的网格线/标签。
现在,显示2011年1月的标签没有意义,而2013年7月显示标签。网格将以不规则的间隔出现,从而使用户完全无法正常使用。
因此,在年份模式下,轴显示每年的一月,因此显示您所看到的。
您可以做的是控制此粒度。它由轴渲染器的minGridDistance
设置控制。基本上,这意味着网格线之间的最小距离。
数字越小,网格将越精细。
假设是10像素:
dateAxis.renderer.minGridDistance = 10;
现在您每3个月将获得一个网格/标签。进一步降低数字,您可能会遇到个别月份,但可能会面临人满为患的情况。
标签适配器接收到的Date
对象的底线不是您数据中实际数据项的日期。这是网格线DateAxis
要放置以描述其缩放进度的日期。
您可以阅读有关网格here的粒度的更多信息。