如何在DateAxis AxisLabel文本适配器中检索正确的日期?

问题描述 投票:0回答:1

尝试更改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

amcharts amcharts4
1个回答
0
投票

这是有关“轴网格粒度”的。让我解释一下。

您的数据跨越数年。这意味着轴需要显示几年的刻度。为了使其不被网格线和标签太挤满,它直观地修改了网格/标签的粒度。

在您的情况下,它将进入“年份”模式,这意味着它将显示每年的网格线/标签。

现在,显示2011年1月的标签没有意​​义,而2013年7月显示标签。网格将以不规则的间隔出现,从而使用户完全无法正常使用。

因此,在年份模式下,轴显示每年的一月,因此显示您所看到的。

您可以做的是控制此粒度。它由轴渲染器的minGridDistance设置控制。基本上,这意味着网格线之间的最小距离。

数字越小,网格将越精细。

假设是10像素:

dateAxis.renderer.minGridDistance = 10;

现在您每3个月将获得一个网格/标签。进一步降低数字,您可能会遇到个别月份,但可能会面临人满为患的情况。

标签适配器接收到的Date对象的底线不是您数据中实际数据项的日期。这是网格线DateAxis要放置以描述其缩放进度的日期。

您可以阅读有关网格here的粒度的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.