我已经摆弄这个amchart4代码几天了,但仍然不能让它精确地显示Y轴数据,它总是倾向于向下或向上舍入
我已经尝试过maxprecision选项、numberformat选项和许多其他选项,但仍然无法正确解析,数据是通过json加载的,但对于jsfiddle,我在javascript中创建了类似的temp数据。
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上的示例代码,它清楚地说明了这个问题
发布于 2019-11-10 19:14:04
这是个ValueAxis
。它显示了抽象值比例,网格的值适合特定的值范围,并且不一定与您的实际数据点相对应。
可以通过减少轴渲染器的minGridDistance
来增加粒度。例如:
valueAxis.renderer.minGridDistance = 10;
这将使网格/标签更频繁,因此更精确,但它不能保证这些对应于实际的数据点。
如果您需要绝对放置网格/标签的精确值,则需要为这些值中的每个值添加“轴范围”。
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。
如果你运行这个,你就会明白为什么把网格/标签放在精确值上不是一个好主意;)
https://stackoverflow.com/questions/58745274
复制相似问题