如何在不自动舍入小数的情况下在amchart XY图表的值轴上显示精确数据?

我一直在摸索着amchart 4代码几天,但仍然无法准确显示Y轴数据,它总是倾向于将其舍入或舍入

我尝试过maxprecision选项,numberformat选项和许多其他选项,但仍无法正确解析,数据通过json加载,但对于jsfiddle,我在javascript中做了类似的临时数据

chart.data = 
[{"date":"2019-11-07","value":0.0051},{"date":"2019-11-06","value":0.0063},{"date":"2019-11-05","value":0.0059},{"date":"2019-11-04","value":0.0071},{"date":"2019-11-03","value":0.0101},{"date":"2019-11-02","value":0.0113},{"date":"2019-11-01","value":0.0101}];

因此在Y轴上,该值不显示为0.0101,而是舍入为0.01。

这是在jsfiddle上运行的示例代码,清楚地显示了问题

https://jsfiddle.net/6gck9yz8/

csuct882 回答:如何在不自动舍入小数的情况下在amchart XY图表的值轴上显示精确数据?

这是ValueAxis。它显示了抽象的值标度,其中网格的值适合特定的值范围,并且不一定与您的实际数据点相对应。

您可以通过减少轴渲染器的minGridDistance来增加粒度。例如:

valueAxis.renderer.minGridDistance = 10;

More about axis grid density

这将使网格/标签更加频繁,从而更加精确,但不能保证它们与实际数据点相对应。

如果您需要将网格/标签绝对放置在精确值上,则需要为每个值添加“轴范围”。

More info about axis ranges as guides

您可以通过遍历所有数据并为每个值放置一个轴范围来使其自动化:

for(var i = 0; i < chart.data.length; i++) {
  var range = valueAxis.axisRanges.create();
  range.value = chart.data[i].value;
  range.label.text = chart.data[i].value + "";
  range.grid.stroke = am4core.color("#396478");
  range.grid.strokeOpacity = 0.5;
}

这是您的小提琴中的updated version

如果运行此命令,您将理解为什么将网格/标签放置在精确值上不是一个好主意;)

enter image description here

本文链接:https://www.f2er.com/3146290.html

大家都在问