如何在 DateAxis AxisLabel 文本适配器中检索正确的日期?
How to retrieve correct date inside DateAxis AxisLabel text adapter?
我在尝试更改 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 给我一个日期对象,只有年份初始化,月份每次都设置为一月,而文本参数给我 "Jul" 七月。
为什么日期对象不正确?
**** 编辑 ****
这是我的问题的代码笔,它实际上发生在图表宽度太窄,因此 dateAxis 只显示年份时:
https://codepen.io/XxSven/pen/rNadEPG
这大约是 "axis grid granularity"。让我解释一下。
您的数据跨越数年。这意味着 axis 需要显示几年的刻度。为了不被网格线和标签塞得太满,它直观地修改了其 grid/labels.
的粒度。
在你的情况下,它进入 "years" 模式,这意味着它每年显示一个网格 line/label。
现在显示 2011 年 1 月的标签没有意义,但显示 2013 年 7 月的标签。网格将以不规则的间隔排列,使用户完全偏离规模。
因此,在年模式下,轴显示每年的一月,因此您会看到。
你能做的就是控制这个粒度。它由轴渲染器的 minGridDistance
设置控制。基本上它是指网格线之间的最小距离。
数字越少,您的网格就越细化。
假设将其设为 10 像素:
dateAxis.renderer.minGridDistance = 10;
现在您将每 3 个月获得一次 grid/label。进一步降低这个数字,你可能会达到个别月份,但可能会面临过度拥挤。
最重要的是,标签适配器收到的 Date
对象不是数据中实际数据项的日期。这是网格线的日期 DateAxis
想要放置以描述其比例进展。
您可以阅读有关网格粒度的更多信息 here。
我在尝试更改 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 给我一个日期对象,只有年份初始化,月份每次都设置为一月,而文本参数给我 "Jul" 七月。 为什么日期对象不正确?
**** 编辑 ****
这是我的问题的代码笔,它实际上发生在图表宽度太窄,因此 dateAxis 只显示年份时: https://codepen.io/XxSven/pen/rNadEPG
这大约是 "axis grid granularity"。让我解释一下。
您的数据跨越数年。这意味着 axis 需要显示几年的刻度。为了不被网格线和标签塞得太满,它直观地修改了其 grid/labels.
的粒度。在你的情况下,它进入 "years" 模式,这意味着它每年显示一个网格 line/label。
现在显示 2011 年 1 月的标签没有意义,但显示 2013 年 7 月的标签。网格将以不规则的间隔排列,使用户完全偏离规模。
因此,在年模式下,轴显示每年的一月,因此您会看到。
你能做的就是控制这个粒度。它由轴渲染器的 minGridDistance
设置控制。基本上它是指网格线之间的最小距离。
数字越少,您的网格就越细化。
假设将其设为 10 像素:
dateAxis.renderer.minGridDistance = 10;
现在您将每 3 个月获得一次 grid/label。进一步降低这个数字,你可能会达到个别月份,但可能会面临过度拥挤。
最重要的是,标签适配器收到的 Date
对象不是数据中实际数据项的日期。这是网格线的日期 DateAxis
想要放置以描述其比例进展。
您可以阅读有关网格粒度的更多信息 here。