Javascript 线图形在AM图表中呈现为直线
我正在尝试绘制线条图,但这些图形在图形区域的底部呈现为一条直线。我也在其中添加了列图形。它们显示正确,但直线图显示的不是正确的直线。我在最后添加了截图。请帮忙 这是我的图表标题Javascript 线图形在AM图表中呈现为直线,javascript,graph,amcharts,Javascript,Graph,Amcharts,我正在尝试绘制线条图,但这些图形在图形区域的底部呈现为一条直线。我也在其中添加了列图形。它们显示正确,但直线图显示的不是正确的直线。我在最后添加了截图。请帮忙 这是我的图表标题 var header_graph = [{"balloonText":"[[title]] of [[category]]:[[value]]", "fillAlphas":"1", "id":"ProductA",
var header_graph = [{"balloonText":"[[title]] of [[category]]:[[value]]",
"fillAlphas":"1",
"id":"ProductA",
"title":"Produc A ",
"type":"SmoothedLine",
"valueField":"column2"}];
这是我的图形数据值
var data_graph = [{"category":"Jan",
"column1":"85", "column2":"24", "column3":"343",
"column4":"85", "column5":"31", "column6":"267",
"column7":"85", "column8":"19", "column9":"439"},......]
这是生成图表的整个脚本
var chart = AmCharts.makeChart("chartdiv", {
"type": "serial",
"depth3D": 2,
"startDuration": 1,
"theme": "light",
"precision": 2,
"valueAxes": [{
"id": "v1",
"title": "",
"position": "left",
"autoGridCount": false,
}, {
"id": "v2",
"title": "",
"gridAlpha": 0,
"position": "right",
"autoGridCount": false
}],
"graphs": header_graph ,
"chartScrollbar": {
"graph": "column2",
"oppositeAxis": false,
"offset": 30,
"scrollbarHeight": 50,
"backgroundAlpha": 0,
"selectedBackgroundAlpha": 0.1,
"selectedBackgroundColor": "#888888",
"graphFillAlpha": 0,
"graphLineAlpha": 0.5,
"selectedGraphFillAlpha": 0,
"selectedGraphLineAlpha": 1,
"autoGridCount": true,
"color": "#AAAAAA"
},
"chartCursor": {
"pan": true,
"valueLineEnabled": true,
"valueLineBalloonEnabled": true,
"cursorAlpha": 0,
"valueLineAlpha": 0.2
},
"categoryField": "category",
"categoryAxis": {
"parseDates": false,
"dashLength": 1,
"minorGridEnabled": true,
"gridPosition": "start"
},
"legend": {
"useGraphSettings": true,
"position": "bottom"
},
"balloon": {
"borderThickness": 1,
"shadowAlpha": 0
},
"export": {
"enabled": false
},
"dataProvider": data_graph
});
图表根据图表的值范围按比例绘制直线,与其他列相比,该直线的值似乎非常小。因此,它将看起来像一条接近底部的直线 您可以使用
valueScrollbar
,让用户放大valueAxis/Y轴,以便更好地查看线条。它具有与中所示相同的属性:
除此之外,或者让你的valueAxis变小,你能做的就不多了
(主题之外,您应该将值设置为数字,而不是字符串。)
编辑
您可以使用动态设置图表的最大值和最小值,让图表在图表初始化时确定这些值,如下所示:
//get the maximum and minimum values from the dataProvider
AmCharts.addInitHandler(function(chart) {
var maximum = Number.MIN_VALUE;
var minimum = Number.MAX_VALUE;
chart.dataProvider.forEach(function(data) {
//for each dataProvider element, check the properties that correspond to the chart graphs' valueFields.
chart.graphs.forEach(function(graph) {
if (data[graph.valueField] != null) {
maximum = Math.max(maximum, data[graph.valueField]);
minimum = Math.min(minimum, data[graph.valueField]);
}
});
});
chart.valueAxes[0].maximum = maximum;
chart.valueAxes[0].minimum = minimum;
chart.valueAxes[0].strictMinMax = true;
}, ["serial"]);
好的,让我试试这个。是的,你是对的,但我不确定最大值轴从2000到2500会持续多长时间,这只是浪费空间,如果在这个范围内没有数据,我们怎么能忽略这个范围,让它保持在2000只设置最大值轴。根据图表的设置方式,可以在创建图表之前在JavaScript中动态执行此操作,也可以通过设置自己的代码在图表初始化时运行,并动态设置最小值和最大值。我用一些代码更新了我的答案,演示了如何做到这一点。
//get the maximum and minimum values from the dataProvider
AmCharts.addInitHandler(function(chart) {
var maximum = Number.MIN_VALUE;
var minimum = Number.MAX_VALUE;
chart.dataProvider.forEach(function(data) {
//for each dataProvider element, check the properties that correspond to the chart graphs' valueFields.
chart.graphs.forEach(function(graph) {
if (data[graph.valueField] != null) {
maximum = Math.max(maximum, data[graph.valueField]);
minimum = Math.min(minimum, data[graph.valueField]);
}
});
});
chart.valueAxes[0].maximum = maximum;
chart.valueAxes[0].minimum = minimum;
chart.valueAxes[0].strictMinMax = true;
}, ["serial"]);