2017-06-22 141 views
0

我试图设置最大值轴使用dataprovider,因为我动态加载数据在我的条形图我需要看到“进度”之一的酒吧比较一个应该是总数。AmCharts - 使用dataprovider设置最大值轴

我该如何做到这一点?

我”试着用:

"valueAxes": [ 
       { 
        "id": "ValueAxis-1", 
        "stackType": "regular", 
        "maximum": myDataProviderAttribute 
       } 

,但没有运气。

任何建议将大大优于。

+0

我不知道你是什么在你的酒吧“动态加载数据”的方法图表是。如果您使用dataLoader插件,则可能需要将侦听器添加到dataUpdated事件,并根据您收到的数据更新第一个数值轴的最大值。如果您使用的是AJAX,则可以在收到回复后选择构建图表。如果您可以分享您获取数据的方式,我可以给您更好的建议。 – Robbert

回答

1

我submited一张票AmCharts支持,并得到这个反馈:

您可以设置最大前图表是基于你拥有的数据,里面addInitHandler初始化。下面是一个简单的柱形图的例子:

AmCharts.addInitHandler(function(chart) { 

    // find data maximum: 
    var min = chart.dataProvider[0].visits; 
    for (var i in chart.dataProvider) { 
    if (chart.dataProvider[i].visits > max) { 
     max = chart.dataProvider[i].visits; 
    } 
    } 
    // set axes max based on value above: 
    chart.valueAxes[0].maximum = max + 100; 
    chart.valueAxes[0].strictMinMax = true; 
}); 

您可能需要使用strictMinMax如上执行的值: https://docs.amcharts.com/3/javascriptcharts/ValueAxis#strictMinMax

内部addInitHandler设定最低的实施例:

https://codepen.io/team/amcharts/pen/b4be8cb4e3c073909860720e0909a876?editors=1010

如果刷新数据或使用实时数据,则在动画或验证图表以显示更新的数据之前,应重新计算最大值,如果您想要他轴改变,然后使用chart.valueAxes [0] .maximum = max;其中最大值是根据数据输入计算的。

下面是一个例子:

function loop() { 
    var data = generateChartData(); 
    chart.valueAxes[0].maximum = max; 

    // refresh data: 
    chart.animateData(data, { 
     duration: 1000, 
     complete: function() { 
      setTimeout(loop, 2000); 
     } 
    }); 
} 

线条以上,在此例子中使用:

https://codepen.io/team/amcharts/pen/d0d5d03cfdcc2cc256e28ec52ad8b95c/?editors=1010